Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在类基视图中的何处放置逻辑?_Python_Django - Fatal编程技术网

Python 在类基视图中的何处放置逻辑?

Python 在类基视图中的何处放置逻辑?,python,django,Python,Django,我想了解在类基视图中,我将在何处执行以下逻辑: 基本上,我想检查用户是否有帐户,如果是这样的话,将它们转发到URL A,或者URL B。但是,我不能100%确定get_success_URL()是否是CBV中的最佳位置,或者Django是否有适合此用例的东西。我见过其他CBV,但我尝试过,但失去了范围。请记住,我需要传递用户id 到目前为止,我已经做到了这一点: class CampaignView(BaseUpdateView): form_class = UserLookUpFro

我想了解在类基视图中,我将在何处执行以下逻辑:

基本上,我想检查用户是否有帐户,如果是这样的话,将它们转发到URL A,或者URL B。但是,我不能100%确定get_success_URL()是否是CBV中的最佳位置,或者Django是否有适合此用例的东西。我见过其他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

您可以在
表单中执行此操作。下面是一段未经测试的代码,可以帮助解释这一概念:

from django.shortcuts import redirect

def form_valid(self, form):
    email = form.cleaned_data.get("email", "")
    prev_user = Campaign.object.filter(email=email)
    if prev_user:
       return redirect('campaigns_login', self.object.id, prev_user[0].userid)
    else:
       return redirect('campaigns_register', self.object.id)

我认为应该放在竞选观点的帖子上:

def post(self, request, *args, **kwargs):
   form= self.form_class(request.POST)
   if form.is_valid():
      user_email= form.cleaned_data['email']
      user_of_campaign= Campaign.objects.filter(email= user_email)
      if len(user_of_campaign)>0:
         return redirect('/login', user_of_campaign[0].id)
      else: 
         return redirect('/register')
      return super(CampaignView, self).form_valid(form)
   return super(CampaignView, self).form_invalid(form)

嗨,谢谢你。你能解释一下最后两次的回程吗?我不知道第二个如何工作。第二个是,如果表单无效,那么用户将返回到初始表单页面。