您好我使用了django inbult認證URL和我的項目的視圖,現在已經完成了初始用戶帳戶創建/登錄/重置密碼過程。Django爲什麼內置認證登錄功能沒有通過成功登錄後的用戶信息
現在,用戶可以登錄並重定向到成功登錄後的網址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)
我的問題是:
1被設定爲django.contrib.auth
'/資料/' 功能的REDIRECT_FIELD_NAME
?
我可以看到這個變量是從django.contrib.auth
from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login, logout as auth_logout, get_user_model
我沒有這個變量任何設置進口,但畢竟用戶成功登錄後,頁面將被引導到/帳號/資料/
2登錄功能是否已通過有關用戶的帳戶信息?如果是,我該如何訪問它?
從代碼,如果用戶成功登錄後,頁面會被重定向:return HttpResponseRedirect(redirect_to)
,重定向到賬戶/型材/,最初爲URL的觀點只是一個
HttpResponse("You have logged in successfully")
現在,當我試圖實現視圖功能時,我意識到沒有關於用戶的信息已經通過。
我試過在視圖函數中使用print request
,但是在服務器終端打印的信息中沒有關於用戶的信息,我得到的只是一長串系統設置或其他信息。但是,登錄應該通過誰已成功登錄到成功的登錄URL右側的信息?
非常感謝您的解釋。
嗨巴布,謝謝你回答我的問題。現在我明白了我現在第二個問題的答案。對於我的第一個問題,是的,我可以看到現在REDIRECT_FIELD_NAME已設置爲「下一個」。 「登錄表單」是什麼意思?我沒有觸及表格,也沒有傳遞任何信息。 – Mona
@Mona更新了答案! – Babu
你好,現在我得到了我的問題的答案,非常感謝! – Mona