パスワードを取得するには、ログイン登録、パスワードを変更、パスワードをリセットするために、新しいプロジェクト、電子メールやその他の機能を追加する方法?

まず、新しいプロジェクトの対応する場所にHTMLをコピーし、次の2つの赤いボックス、(庭の私のブログの列内のファイル保存、特定のhtmlファイル)と同じを配置するようにしてください、

実際のプロジェクトの名前に置き換えられるために店のアプリケーション、場所、覚えている:htmlファイルは、{%%のURL「ログインショップ」}と同様に表示されます。

 

二、以下のように設定した設定。

ショップ:product_list表現ログインに成功した後、ジャンプへのパス(「product_list /」)URLアドレスを。

ショップ:着陸パス(「ログイン/」)URLアドレスを表してログイン。

base.html以下のコードに合わせて設けられた3つの、

{%負荷静的%} 
<!DOCTYPE HTML> 
<HTMLのlang = "EN"> 
<HEAD> 
    <メタのcharset = "UTF-8"> 
    <タイトル> {%ブロックタイトル%} {%の末端ブロック%} </タイトル> 
    <リンクのhref = "{%静的"CSS / base.css" %}" REL = "スタイルシート"> 
</ head> 
<body> 
    <DIV ID = "ヘッダ"> 
        <A HREF = "/"クラス= "ロゴ">マイショップ</a>の
    </ div> 
    {%であればrequest.user.is_authenticated%} 
        20ピクセル"> <divのidは="サブヘッダ」スタイル="マージン左
            の<divクラス= "カート"> 
                カートがあります空の。
            </ div> 
        </ div> 
    {%ENDIF%} 
    <divのスタイル= "マージン右:20ピクセル">
        {%request.user.is_authenticated%なら} 
            こんにちは{{request.user.first_name}}、<a href="{% URL "shop:password_change" %}">修改密码</a>の
            <A HREF = "{ %URL "ショップ:ログアウト" %} ">ログアウト</a>の
        {%他%} 
            <a href="{% URL "shop:login" %}">ログインする</a> 
        {%endifの%} 
    </ DIV> 
    <DIV ID = "コンテンツ"> 
        {%ブロックコンテンツ%} 
        {%エンドブロック%} 
    </ div> 
</ body> 
</ HTML>

  第四には、forms.py内のファイルの一番下に、次のコードを貼り付けます。

ジャンゴインポートフォームから
django.contrib.auth.modelsインポートユーザーから


クラスLoginForm(forms.Form):
    ユーザ名= forms.CharField()
    パスワード= forms.CharField(ウィジェット= forms.PasswordInput)


クラスUserRegistrationForm(forms.ModelForm):
    パスワード= forms.CharField(ラベル= 'パスワード'、ウィジェット= forms.PasswordInput)
    パスワード2 = forms.CharField(ラベル= 'を繰り返しパスワード'、ウィジェット= forms.PasswordInput)

    クラスのMeta:
        モデル=ユーザー
        フィールド=( 'ユーザ名'、 ' first_nameの」、 'メール')

    デフclean_password2(自己):
        CD = self.cleaned_data 
        場合は、CD [ 'パスワード'] = CD![ 'パスワード2']: 
            昇給フォーム。ValidationErrorを( 'パスワードドン\' tは一致。 ')
        リターン・CD [ 'パスワード2']

  第五には、以下のurls.pyファイルに、次のコードを貼り付けます。

django.urlsからパスをインポート
auth_viewsとしてdjango.contrib.authインポートビューから
から。インポートビューは

= '店' APP_NAME 

urlpatterns = [ 
    パス( 'ログイン/'、auth_views.LoginView.as_view()、名前= 'ログイン')、
    「=パス( 'ログアウト/'、auth_views.LogoutView.as_view()、名前をログアウト')、
    パス('」、views.product_list、名前= 'product_list')、 パスワード変更のURL 
    パス( 'password_change /'、
         auth_views.PasswordChangeView.as_view(
            テンプレート名= 'ショップ/ password_change_form.html'、
            success_url =」 / password_change /行わ/」
         )、NAME = 'password_change')、
    パス(」
         auth_views.PasswordChangeDoneView.as_view(
            テンプレート名= 'ショップ/ password_change_done.html' 
         )、名前= 'password_change_done')、 リセットパスワードのURL 
    パス( 'パスワードリセット/'、
         auth_views.PasswordResetView.as_view(
             テンプレート名= "ショップ/ password_reset_form。 HTML」、
             email_template_nameは= "ショップ/ password_reset_email.html"、
             subject_template_name = "ショップ/ password_reset_subject.txt"、
             success_url = "/パスワード・リセット・ダン/"、 
         )、
         名= 'password_reset')、
    パス( 'パスワードのリセット-done /」、
         auth_views.PasswordResetDoneView。as_view(
             テンプレート名= "ショップ/ password_reset_done.html" 
         )、
         名前= 'password_reset_done')、
    パス( 'パスワードリセット確認/ <uidb64> / <トークン> /'、
         auth_views.PasswordResetConfirmView.as_view(
             テンプレート名= "ショップ/ password_reset_confirm。 HTML」、
             success_url = "/パスワード・リセット・完全/"、 
         )、
         名= 'password_reset_confirm')、
    パス( 'パスワードリセット-完全/'、
         auth_views.PasswordResetCompleteView.as_view(
             テンプレート名= "ショップ/ password_reset_complete.html" 
         )、
         名前= 'password_reset_complete')、
    パス( '/登録'、views.register、名前= '登録')、
   
]

  第六は、views.pyファイルの下に、次のコードを貼り付けます。

インポートget_object_or_404、からdjango.shortcutsをレンダリング
カテゴリー.models輸入、製品から
cart.formsインポートCartAddProductFormから
インポートlogin_required django.contrib.auth.decoratorsから
.formsインポートUserRegistrationFormから


:DEFレジスタ(リクエスト)
    IFは==「POSTをrequest.method 「:
        user_form = UserRegistrationForm(request.POST)
        user_form.is_valid IF(): は、新しいユーザーオブジェクトを作成し、それを保存するために避け
            new_user = user_form.save(偽=コミット)
            #設定は、パスワードの選択
            new_user.set_password(user_formを.cleaned_data [ 'パスワード'])
            ユーザオブジェクトの保存#
            new_user.save()
            リターンレンダリング(リクエスト、 'ショップ/ register_done.html'、{ 'new_user':new_user})
    他:
        user_form = UserRegistrationForm()
    の戻りは(要求、 'ショップ/ register.html'、{ 'user_form':user_formを})レンダリング


@ login_required 
DEF product_list(リクエスト、category_slug =なし):
    #......... 


@login_required 
DEF product_detail(要求ID、スラグ):
    #........

  

おすすめ

転載: www.cnblogs.com/tuobei/p/12509612.html