嗨,我为我的项目使用了 django inbult auth url 和视图,现在已经完成了初始用户帐户创建/登录/重置密码过程。
现在,用户可以登录并被重定向到成功登录后的url accounts/profile/。
我对django登录功能有几个疑问。为方便起见,我复制粘贴了下面的 django 内置登录功能代码。
@sensitive_post_parameters()
@csrf_protect
@never_cache
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm,
current_app=None, extra_context=None):
"""
Displays the login form and handles the login action.
"""
redirect_to = request.REQUEST.get(redirect_field_name, '')
if request.method == "POST":
form = authentication_form(request, data=request.POST)
if form.is_valid():
# Ensure the user-originating redirection url is safe.
if not is_safe_url(url=redirect_to, host=request.get_host()):
redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
# Okay, security check complete. Log the user in.
auth_login(request, form.get_user())
return HttpResponseRedirect(redirect_to)
else:
form = authentication_form(request)
current_site = get_current_site(request)
context = {
'form': form,
redirect_field_name: redirect_to,
'site': current_site,
'site_name': current_site.name,
}
if extra_context is not None:
context.update(extra_context)
return TemplateResponse(request, template_name, context,
current_app=current_app)
我的问题是:
1REDIRECT_FIELD_NAME
函数中的 in 是否设置为 '/profile/' django.contrib.auth
?
我可以看到这个变量是从django.contrib.auth
from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login, logout as auth_logout, get_user_model
我没有对这个变量进行任何设置,但是用户成功登录后,页面将被定向到 /accounts/profile/
2 登录功能是否传递了有关用户的帐户信息?如果是,我该如何访问它?
从代码中,如果用户成功登录,页面将被重定向:return HttpResponseRedirect(redirect_to)
在我的情况下,重定向到 accounts/profile/ ,最初的 url 视图只是一个
HttpResponse("You have logged in successfully")
现在,当我尝试实现视图功能时,我意识到没有传递有关用户的信息。
我试过print request
查看功能,但在服务器终端打印的消息中没有关于用户的信息,我得到的只是一长串系统设置或其他信息。但是,登录应该将谁刚刚成功登录的信息传递给成功登录的url,对吗?
非常感谢您的解释。