django-ログイン認証

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 '' ユーザ名またはパスワード" })

 

おすすめ

転載: www.cnblogs.com/yifengs/p/11609219.html