【发布时间】:2014-06-11 07:26:22
【问题描述】:
我想了解在 Class Base View 的哪个位置我会为以下内容执行逻辑:
基本上,我想检查用户是否有帐户,如果有,则将其转发到 URL A,否则将其转发到 URL B。但是,我不能 100% 确定 get_success_url() 是否是 CBV 中的最佳位置或者如果 Django 有一些已经满足这个用例的东西。我见过其他像 RedirectView 这样的 CBV 我已经尝试过这个但失去了范围。请记住,我需要传递用户 ID。
这是我到目前为止所达到的目标:
class CampaignView(BaseUpdateView):
form_class = UserLookUpFrom
model = Campaign
def get_context_data(self, **kwargs):
context = super(CampaignView, self).get_context_data(**kwargs)
# context['form'] = AppUserLookUpFrom
return context
def form_valid(self, form):
"""
If the form is valid, in this case DON'T save it!
"""
return super(CampaignView, self).form_valid(form)
def get_success_url(self):
"""
Returns the supplied URL.
"""
if self.success_url:
url = self.success_url % self.object.__dict__
else:
try:
currect_user = Campaign.object.get_user_by_email(EMAIL HERE DONT KNOW HOW TO GET THIS YET FROM FORM)
if currect_user:
url = reverse('campaigns_login', args=(self.object.id,'self.userid'))
else:
url = reverse('campaigns_register', args=(self.object.id)
except AttributeError:
raise ImproperlyConfigured(
"No URL to redirect to. Either provide a url or define"
" a get_absolute_url method on the Model.")
return url
【问题讨论】: