想法是如果我已经登入了,然后在输入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")
不知道你的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
。