現在のユーザーを表すすべての Web リクエストに request.user 属性を指定します。現在のユーザーがログインしていない場合、この属性は AnonymousUser のインスタンスになり、それ以外の場合は User インスタンスになります。
is_authenticated() で区別できます。例:
if request.user.is_authenticated():
# 認証されたユーザーに対して何かを行います。
else:
# 匿名のユーザーに対して何かを行います。
ログイン
login()
ログイン関数にはパラメータとして HttPRequest オブジェクトと User オブジェクトが必要です。 login() は、Django のセッション フレームワークを使用して、ユーザーの ID をセッションに保存します。
authenticate()とlogin()を同時に使用します:
from django.contrib.auth importauthenticate,login
def my_view(request):
username = request.POST['username']
passWord = request .POST[ 'password']
user =authenticate(username=username, password=password) if user is not None:
if user.is_active:
login(request, user)
# 成功ページにリダイレクトします。
el se :
# 「無効なアカウント」エラー メッセージを返します
else:
# 「無効なログイン」エラー メッセージを返します。
def logout_view(request):
logout(request)
# 成功ページにリダイレクトします。
def my_view(request):
request.user.is_authenticated():
return redirect('/login/?next=%s' % request.path)
# ...
def my_view(request):
if not request.user.is_authenticated():
return render(request, 'myapp/ login_error.html')
# ...
@login_required ed
def my_view ( request):
...
@login_required(redirect_field_name=' my_redirect_field')
def my_view(request):
...
@login_required(login_url ='/accounts/login/')
def my_view(request):
...
request.user.email:
に '@example.com' がない場合return HttpResponse("この投票では投票できません。")
# ...
def email_check(user):
return user.email の「@example.com」
@user_passes_test(email_check)
def my_view(request):
...
def my_view(request):
...
def login(request, template_name='registration/login.html',
redirect_field_name=REDIRECT_FIELD_NAME,
authentication_form=AuthenticationForm,
current_app=None, extra_context=None):
"" "
ログイン フォームを表示し、ログイン アクションを処理します.
"""
redirect_to = request.POST.get(redirect_field_name,
request.GET.get(redirect_field_name, ''))
if request.method == "POST":
form = 認証フォーム(リクエスト, データ= request.POST)
if form.is_valid():
# ユーザー発信のリダイレクト URL が安全であることを確認します
そうでない場合 is_safe_url(url=redirect_to, host=request.get_host()):
redirect_to =solve_url(設定. LOGIN_REDIRECT_URL)
# さて、セキュリティチェックは完了しました。ユーザーをログインします。
auth_login(request, form.get_user())
return HttpResponseRedirect(redirect_to)
else:
form =authentication_form(request)
get_current_site = (リクエスト)
context = {
'フォーム' : form,
redirect_field_name: redirect_to,
'site': current_site,
'site_name': current_site.name,
}
extra_context が None でない場合:
context.update(extra_context)
return TemplateResponse(request, template_name, context,
current_app=current_app)
URL 名:login
パラメータ:
template_name: 默认の登陆模板.默认はregistration/login.html.
redirect_field_name:重定方向の名前、次へ承認します。
authentication_form: 默认フォーム。デフォルトは AuthenticationForm です。
current_app: 現在のビューがどのアプリケーションに含まれているかを示すヒント。詳細については、名前空間 URL 解決戦略を参照してください。
extra_context: 承認コンテキスト データ内の追加データを文字典に追加します。
django.contrib.auth.views.login は次のようにします。 、そのコンテンツを同じ URL に POST することができます。POST 経由でアクセスすると、まず登録が試行され、成功した場合は次に指定された接続に戻ります。次の設定が行われていない場合は、settings.LOGIN_REDIRECT_URL に戻ります。 (通常、accounts/profile/ が保存されます)。 ログインが失敗した場合は、再度ログイン用のテンプレートが表示されます。上下文量:
form: 1 つの表オブジェクトAuthenticationForm.
next: 登録成功後の逆方向接続。クエリ文字列を含めることができます。
また、redirect_field_name パラメータを介して、再定方向接続フィールド名を独自に指定することもできます。 registration/login.html モジュールの初期状態では、base.html モジュール (コンテンツ ブロックが含まれる) が定義されています。
{% extends "base.html" %}
{% block content %}
{% if form.errors %}
ユーザー名とパスワードが一致しませんでした。もう一度お試しください。 p>
{% endif %}
認証システムをカスタマイズする場合は、authentication_form パラメーターを介して、カスタマイズされた認証フォームをログイン ビューに渡すことができます。フォームの __init__ メソッドにはリクエスト パラメーターがあり、認証された User オブジェクトを返す get_user メソッドを提供する必要があります。
logout(request[, next_page, template_name, redirect_field_name, current_app,extra_context])
ユーザーをログアウトします。
URL名: logout
オプションのパラメータ:
next_page: ログアウト後のリダイレクトリンク。
logout_then_login (request [、login_url、current_app、extra_context])
ユーザーをログアウトし、ログイン リンクにリダイレクトします。
オプションのパラメーター:
login_url: ログイン ページへのリダイレクト リンク。デフォルト値は settings.LOGIN_URL です。
password_change(request[, template_name, post_change_redirect,password_change_form,current_app, extra_context])
ユーザーがパスワードを変更できるようにします。
URL名:password_change
オプションの引数:
template_name:テンプレート名、デフォルト値はregistration/password_change_formです.html 。
post_change_redirect: リダイレクトリンク。
password_change_form: ユーザーパラメータを含む、カスタマイズされたパスワード変更フォーム。デフォルト値はPasswordChangeFormです。
password_change_done(request[, template_name,current_app, extra_context])
ユーザーがパスワードを変更した後のページ。
URL名:password_change_done
オプションの引数オプションの引数:
template_name:テンプレート名, デフォルトは、registration/password_change_done.html です。
password_reset(request[, is_admin_site, template_name, email_template_name,password_reset_form, token_generator, post_reset_redirect, from_email, current_app, extra_context, html_email_template_name])
パスワードを含む電子メールをユーザーに送信します-time link 、ユーザーがパスワードをリセットできるようにします。
入力されたメールアドレスが存在しない場合、メールは送信されません。
URL名:password_reset
オプションの引数オプションの引数:
template_name:テンプレート名、デフォルト値はregistration/password_reset_form.htmlです。
email_template_name: リチャージ リンクを含むメールの生成に使用されるテンプレート名。デフォルト値は、registration/password_reset_email.html です。
subject_template_name: 電子メールの件名の生成に使用されるテンプレートの名前。デフォルト値は、registration/password_reset_subject.txt です。
password_reset_form: パスワード リセット フォーム、デフォルト値は PasswordResetForm です。
token_generator: ワンタイム リンクのクラス インスタンスを確認します。デフォルト値は、default_token_generator、そのクラスは django.contrib.auth.tokens.PasswordResetTokenGenerator.
post_reset_redirect:パスワードのリセット後のリダイレクト リンク。
from_email: 電子メール アドレス。デフォルト値は DEFAULT_FROM_EMAIL です。
current_app: 現在のビューが含まれているアプリケーションを示すヒント。詳細については、名前空間 URL 解決戦略を参照してください。
extra_context: の辞書。テンプレートに渡されるデフォルトのコンテキスト データに追加されるコンテキスト データ。
html_email_template_name: パスワード リセット リンクを含むテキスト/HTML マルチパート電子メールの生成に使用するテンプレートの完全な名前。デフォルトでは、HTML 電子メールは送信されません。
例:Registration/password_reset_email.html (メール コンテンツ テンプレート):
誰かがメール {{ email }} のパスワードのリセットを要求しました。以下のリンクに従ってください:
{{ プロトコル}}://{{ ドメイン }}{ % url 'password_reset_confirm' uidb64=uid token=token %}
password_reset_done(request[, template_name])
ユーザーがパスワード リセット電子メールの送信を選択した後にページを表示します。 post_reset_redirect リンクがpassword_reset() ビューで明示的に指定されていない場合、このビューは直接呼び出されます。
password_reset_confirm(request[, uidb36, token, template_name, token_generator,set_password_form, post_reset_redirect,current_app, extra_context])
新しいパスワードを入力するためのフォームを表示します
password_reset_complete(request[, template_name, current_app, extra_context])
Heavy パスワードの設定に成功した後のフォーム。
ヘルパー関数
redirect_to_login(next[, login_url, redirect_field_name])
ログインに成功したら、別のリンクにリダイレクトします。 .
パラメータ:
next: ログイン成功後のリンク
login_url: ログインページのリンク、デフォルト値: settings.LOGIN_URL。
redirect_field_name: リダイレクトフィールド名、デフォルト値は次です。
組み込みフォーム
クラス AdminPasswordChangeForm
管理者バックグラウンドユーザーパスワード変更フォーム
クラス AuthenticationForm
ログインフォーム。
メソッドconfirm_login_allowed(user)
たとえば、 is_active 属性に関係なく、すべてのユーザーにログインを許可します。 、 user): ただ PASS またはアクティブなユーザーのみのログインを許可します:
Class PickyauthenticationForm (AuthenticationForm):
DEF confirm_login_allowed (SELF, User):
IF not user.is_active:
rais e Forms.validationerror (
_ ("このアカウントは非アクティブです。」)、
through use through using through out through out through out through out through out through out ' ' ' through ‐ ‐ ‐ off , _(" 申し訳ありませんが、「b」で始まるアカウントはここでは歓迎されません。"),
class PasswordChangeForm
class PasswordResetForm
class SetPass wordForm
パスワード設定フォーム
class UserChangeForm
管理者の権限変更フォーム
クラス UserCreationForm
ユーザー作成フォーム。
テンプレートの認証情報 テンプレートの認証データ
現在ログインしているユーザーとその権限は、
Users
をレンダリングするときにテンプレート変数で取得できます。テンプレート RequestContext、現在ログインしているユーザー (User インスタンスまたは AnonymousUser インスタンスのいずれであっても) は、テンプレート変数 {{ user }}:{% if user.is_authenticated %}
ようこそ。 { { user.username }} ログインしていただきありがとうございます。
{% else %}
ようこそ、新しいユーザーです
RequestContext が使用されていない場合、この変数は存在しません。 St Use RequestContext: from django.shortcuts import render_To_Responsefrom django.template Import REQUESTCONTEXTEF SOMEF SOME_View (リクエスト):
# ... Return Render_to_Response ('My_template.html',my_data_dictionary,
context_instance = requestContextExt (request))
上記は、Django ユーザー認証システム (2) Web リクエストの認証内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。