Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 django登录装饰器和用户重定向问题_Python_Django - Fatal编程技术网

Python django登录装饰器和用户重定向问题

Python django登录装饰器和用户重定向问题,python,django,Python,Django,这就是我需要做的。我有一个按钮叫sell。如果用户已登录,则它将执行其正常步骤,并允许用户进行销售。如果用户未登录,我需要重定向到登录页面,并且在用户登录后,重定向到登录用户采取的正常步骤,我将使用用户用户名创建一个url,然后像下面的“username/sell”一样进行销售 作为一个经过身份验证的用户,这个视图工作得很好 @login_required() def UserSell(request,username): thegigform=GigForm() theuse

这就是我需要做的。我有一个按钮叫sell。如果用户已登录,则它将执行其正常步骤,并允许用户进行销售。如果用户未登录,我需要重定向到登录页面,并且在用户登录后,重定向到登录用户采取的正常步骤,我将使用用户用户名创建一个url,然后像下面的“username/sell”一样进行销售

作为一个经过身份验证的用户,这个视图工作得很好

@login_required()
def UserSell(request,username):

    thegigform=GigForm()
    theuser=User.objects.get(username=username)
    if request.method=='POST':
         gigform=GigForm(request.POST,request.FILES)
          if gigform.is_valid():
        gigform.title=gigform.cleaned_data['title']
        gigform.description=gigform.cleaned_data['description']
        gigform.more_info=gigform.cleaned_data['more_info']
        gigform.time_for_completion=gigform.cleaned_data['time_for_completion']
        #need to change this, shouldnt allow any size image to be uploaded
        gigform.gig_image=gigform.cleaned_data['gig_image']
        #commit=False doesnt save to database so that I can add the current user to the gig
        finalgigform=gigform.save(commit=False)
        finalgigform.from_user=theuser
        finalgigform.save()
        return HttpResponseRedirect('done')

else:
    gigform=GigForm()
context=RequestContext(request)
return render_to_response('sell.html',{'theuser':theuser,'thegigform':gigform},context_instance=context)
这里是网址

url(r'^(?P<username>\w+)/sell$','gigs.views.UserSell', name='sell'),
url(r'^(?P\w+)/sell$,'gigs.views.UserSell',name='sell'),
然后模板

<a href="{% url sell user.username %}"><button type="button">Start Selling!</button></a>


现在这很好,因为我是一个登录用户,然后当我作为匿名用户在另一个浏览器上尝试时,我很快发现匿名用户没有用户名,所以我更改了视图、url和模板以仅使用用户。然后,在装饰程序重定向到登录页面后尝试登录之前,这一切都很正常。登录后的{next}}url是绝对路径,即“user/sell”。问题是,使用更新的视图(使用用户而不是用户名)会重定向到“AnonymousUser/sell”。我认为这是我的观点中的一个问题,但是有人能帮忙吗。我需要在登录后重定向为“user/sell”,就像最近登录的用户一样

我认为您不必输入必需的用户名,因为当用户登录时,系统现在可以访问他们的用户名

@login_required()
def UserSell(request):
    ..........

    if request.user.is_authenticated():
        return HttpResponseRedirect(reverse('app_name:login'))
    else:
        context=RequestContext(request)
        return render_to_response('sell.html',{'theuser':request.user,'thegigform':gigform},context_instance=context)
如果要显示用户,只需输入“request.user”或“request.user.username”