2017-12-13 22 views
0

Djangoアプリケーションでdjango-registrationをHMAC workflowで使用しています。登録後、アクティベーションリンクが付いた電子メールがユーザーに送信されます。Django登録のパスワードリセットエラー

私は怒鳴るのバージョンを使用しています:

Django==1.11.1 
django-registration==2.3 

を私が使用しているかもしれない2つの異なるビュー(関数OUクラス)があることをhereを見ました。私はauth_urls.pyにブレークポイントを入れ、私のアプリケーションではregistration.auth_urls_classesが使用されているのを見ました。

{% extends "base.html" %} 
{% load i18n %} 

{% block content %} 
<div class="row justify-content-center g-py-180"> 
    <div class="col-sm-10 col-md-9 col-lg-4"> 
     <header class="text-center g-mb-30"> 
      <h2 class="h2 g-color-black g-font-weight-600"> Resete sua senha </h2> 
     </header> 
     <form method="post" action="{% url 'auth_password_reset' %}"> 
      <h1 class="h5 g-font-weight-300">Forneça seu endereço de email e nós enviaremos para você um link para alterar sua senha.</h1> 


      {% csrf_token %} 

      {% for field in form %} 
       {% if field.name == 'email' %} 
        <div class="mb-4 mt-4"> 
         <input class="form-control g-color-black g-bg-white g-bg-white--focus g-brd-gray-light-v4 
         g-brd-primary--hover rounded g-py-15 g-px-15" type="email" required 
         placeholder="[email protected]" name="{{ field.html_name }}" id="{{ field.auto_id }}"> 
        </div> 
       {% endif %} 
      {% endfor %} 
      <button class="g-min-width-100x btn btn-md u-btn-primary rounded g-py-13 g-px-25" type="submit" value="Submit">Enviar email de redefinição de senha</button> 
     </form> 
    </div> 
</div> 
{% endblock %} 

後:

このリンクはテンプレートpassword_reset_form.htmlに送信する
<a class="g-font-size-12" href="{% url 'auth_password_reset' %}">Esqueceu a senha?</a> 

、それは怒鳴るイメージである:

私は自分のパスワードリセットページに移動するためのリンクを作成しました電子メールアドレスを入力してフォームを送信すると、電子メールが正しく送信されます(電子メールは私に届きました)が、エラーは発生します:

リクエスト URL GET:http://127.0.0.1:8000/accounts/password/reset/auth_password_reset_done

を私のURLは怒鳴るように定義されています

urlpatterns = [ 
    url(r'^$', TemplateView.as_view(template_name='index.html'), name='home'), 

    #authentication 
    url(r'^accounts/', include('registration.backends.hmac.urls')), 

    url(r'^profile/', include('pxgbr2.account_settings.urls', namespace='profile')), 
    url(r'^admin/', admin.site.urls), 
] 

if settings.DEBUG: 
    urlpatterns += static(settings.MEDIA_URL, 
document_root=settings.MEDIA_ROOT) 

注成功URL(auth_password_reset_done ')の名前は「追加されたことをページ(404)リクエストメソッドが見つかりません"リンクの代わりに、パターンに置き換えられます。私は理由を理解できませんでした。

+1

テキストのスクリーンショットを投稿しないでください。 –

答えて

1

あなたはヒットしたようですthis issue。あなたが試みることができるか、Djangoの認証のURLを自分で含めるように単純であるかもしれない修正pull request #111があります:

url('^accounts/', include('django.contrib.auth.urls')), 
url('^accounts/', include('registration.backends.hmac.urls')), 

registration.auth_urlswill be removed in django-registration 3.0ので、別途認証URLなどは、将来のための最善のアプローチです。

+0

私はこれを試してみましたが、この場合はうまくいきましたが、 'password_reset_confirm.html'ページでフォームを送信するときに同じタイプのエラーが発生し、修正できませんでした。{%url ' password_reset_confirm '%}この形式では、いくつかのパラメータ(tokenとuuid)が必要です。だからこそ、私はちょうどdjango登録を使って解決策を探しています。私はプルの要求を見て、私が必要とするもののように見えます。それが事実なら、どのように私のプロジェクトに依存するとしてこれを追加することなく、この変更でジャンゴ登録のリリースを持つことができますか? –

+1

pipを使用してプルリクエストをインストールする方法については、[この質問](https://stackoverflow.com/questions/13561618/pip-how-to-install-a-git-pull-request)を参照してください。 – Alasdair

+1

'password_reset_confirm'ビューを元に戻すときは常にトークンとuuidが必要であることに注意してください(https://docs.djangoproject.com/en/2.0/topics/auth/default/#django)。 contrib.auth.views.PasswordResetView)。 – Alasdair