Django视图中的重定向问题

想法是如果我已经登入了,然后在输入login的页面时回重定向到相应用户的user下。
我目前的做法是:

if request.user.is_authenticated:
       return HttpResponseRedirect("/account/user/[相应用户名]")

urls.py

    url(r'^login',login_views, name='login'),
    url(r'^logout$',logout_views, name='logout'),
    url(r'^register', register, name='register'),
    url(r'^user/([\w]+)$',Management, name='user'),

不知道有没有比较好的内置函数或者其他的方式来解决呢?谢谢~!
views.py

def login_views(request):
    if request.user.is_authenticated:
        return HttpResponseRedirect("/account/user/das")# redirect test
    else:
        if request.method == 'POST':
            username = request.POST['username']
            password = request.POST['password']

            user_status =authenticate(username=username, password=password)
            if user_status:
                login(request, user_status)
                return JsonResponse({'status':'success','message':'登入成功'})
            else:
                if User.objects.filter(username=username):
                    return JsonResponse({'status':'error', 'message':'密码错误'})
                else:
                    return JsonResponse({'status':'error','message':'用户不存在'})
        return render(request, "sign_in.html")
阅读 4.7k
1 个回答

不知道你的login_views怎么写的?官方的实现方式是通过next字段指定,比如这样:

<form action="/login" method="post">
    <input type="hidden" name="next" value="/account/user/[相应用户名]">
    <!-- 用户名,密码等其他字段 -->
</form>

这是Django中的login函数的声明:

#django/contrib/auth/view.py
def login(request, template_name='registration/login.html',
          redirect_field_name=REDIRECT_FIELD_NAME,
          authentication_form=AuthenticationForm,
          current_app=None, extra_context=None):

其中REDIRECT_FIELD_NAME为常量,其值为next

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题