login_requiredデコレータ
アプリケーションルートlogin_requiredデコレータユーザ/ urls.pyで
django.conf.urls インポートURL から user.views インポート RegisterView、アクティブビュー、LoginView、UserInfoView、UserOrderView、AddressView #导入视图类 django.contrib.auth.decoratorsからインポートlogin_required #login_required登录验证装饰器 urlpatterns = [ #のURL( R、views.register、 '^ $を登録する'名前= '登録')、 #URL(R '^ register_handle $'、views.register_handle、名前= 'register_handle')、 #のURL(R '^ログイン$'、ビュー.loginファイル、名前= 'ログイン')、 URL(R ' ^ $を登録する'、RegisterView.as_view()、名前= "登録')、 #のユーザー登録 URL(R&LT ' ^アクティブ/(.*)$ 'ActiveView.as_view()、名前= ' アクティブ')、 #のユーザーがアクティブ (URL R&LT ' ^ $ログイン"、LoginView.as_viewを() 、名前= ' ログイン')、 #のユーザーがアクティブに URLを(R '^ $'、 login_required(UserInfoView.as_view())、名前= 'ユーザー')、#はログイン用いたユーザ認証アクティブ URL(R&LT ' ^ $の注文を'、 UserOrderView.as_view()、名前= ' 注文')、 #のユーザーがアクティブに URL(R&LTを"^アドレス$'AddressView.as_view()、名前= ' アドレス」)、 #のユーザが起動します ]
login_required()次のことを実行します。
- ユーザがログインしていない場合にリダイレクトはsettings.LOGIN_URL、およびクエリ文字列への現在のアクセスの絶対パスを渡します。たとえば、次のように/アカウント/ログイン/ =次/ポーリング/ 3 /? 。
- ユーザーは、通常の実行ビューにログインしている場合。コードビューには、安全に利用者が署名したと仮定することができます。
ジャンプのルーティングを設定するにはログインする必要がありのsettings.py
#のログインアドレス LOGIN_URL = 「/ユーザー/ログイン」 #は、あなたはここでログインをジャンプしますログインしていない場合
ログインしている場合は、以前に訪問したアドレスにジャンプする必要があります
クラスLoginView(ビュー): '' ' ログイン' '' DEF (セルフ、Request)をGET: '' ' ページにログイン' '' # の裁判官のかどうか、ユーザー名を覚えて IF ' ユーザ名' で:Request.Cookies 名 =要求。 COOKIES.get(「ユーザ名」) がチェック = 「確認」 他: ユーザ名 = 「」 にチェック = 「」 #の使用テンプレートは 返す、(レンダリング要求を"login.htmlと '{ ' ユーザ名':ユーザ名、' 確認' :チェック}) DEF (自己、リクエスト)を投稿 :''' 校验登录''」 #接收数据 ユーザ名は= request.POST.get(' ユーザ名' ) パスワード = request.POST.get(' PWD ' ) #の印刷(ユーザー名) #の印刷(パスワード) #校验数据 場合 ではないすべての([ユーザー名、パスワード]): リターンは(要求をレンダリングし、"login.htmlを「{ 」のErrMsg 「:」不完全なデータ" }) ユーザー =認証(ユーザー名=ユーザー名、パスワード=パスワード) #のルックアップデータベースは、すべてのユーザー情報は、その後、該当なし返す返されていない 印刷)(user.passwordを IFユーザーはありません ませんなし: #のユーザ名とパスワードが正しい #がアクティブに確認し た場合:user.is_active #のユーザーが起動した #の記録ユーザーのログイン状態 #の印刷(user.is_active) 旗=ログイン(リクエスト、ユーザー) #1 django.contrib.auth中をログイン方法 #ホームへ ##HttpResponseRedirct:応答=リダイレクト()リバース( 'インデックス製品') #現在のアクセスアドレスを受信 next_url = request.GET.get( '次へ'、リバース( '製品:インデックス')) #のGET( )2番目のパラメータは、デフォルトのアドレス設定 #のログにログをチェックすると、以前に訪問したアドレスへのジャンプ レスポンス=リダイレクト(next_url) #は、ユーザ名が覚えているかどうかを決定する (= request.POST.getを忘れないでください「覚えている」) を印刷(覚えておいてください) IFは ==を忘れないでください' ON ' : #は、ユーザー名を覚えて response.set_cookieを(" ユーザ名'、ユーザー名、max_ageの7 = 3600 * 24 *) #の記録クッキー 他: response.delete_cookie(' ユーザ名' ) #は応答を返し 、戻り応答を 、他: 返すレンダリング(リクエスト、' login.htmlと '{ ' のErrMsg ':' ユーザーをないアクティブ化「}) 他: #のユーザー名またはパスワードが 返すレンダリング(リクエスト、」login.htmlと「{ 」ErrMsg ':' ユーザ名またはパスワード" })