19

password_Reset_confirmビットが機能するのに問題があります。

url:

(r'^password_reset/$', 'django.contrib.auth.views.password_reset'),
(r'^password_reset_done/$', 'django.contrib.auth.views.password_reset_done'),
(r'^password_reset_confirm/(?P<uidb36>[0-9A-Za-z]+)-(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm'),

password_reset_email.htmlには、次のものが含まれます。

{% load url from future %}
Someone asked for password reset for email {{ email }}. Follow the link below:
{{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb36=uid token=token %}

しかし、パスワードをリセットするための電子メールを送信した後、次のエラーメッセージが表示されます。

NoReverseMatch at / password_reset / Reverse for'password_reset_confirm' with arguments'()' and keyword arguments'{' uidb36':' 1'、' token':'38d-b5ec0b2a2321f522f954'}'が見つかりません。

これはビルドインビューを使用しているので、他に何もする必要はないと思いました。

アドバイスをありがとう、

アップデート:

フルパスを使用した後、それは機能しているようです。ただし、2つの電子メールを送信します。それぞれに異なるリンクがあります。何故ですか?そして、{{domain}}はどこに設定しますか?ありがとう

Follow the link below:
http://example.com/password_reset_confirm/1-38d-b5ec0b2a2321f522f954/

Follow the link below:
http://example.com/password_reset_confirm/2-38d-18482e1f129c84b9c2bc/

アップデート2

私はそれを考え出した。他の誰かがこの問題を抱えている場合に備えて。アプリケーションのサイトとしてドメイン名を設定する必要があります。

管理者またはdjangoコンソールの場合:

>>> my_site = Site.objects.get(pk=1)
>>> my_site.domain = 'somedomain.com'
>>> my_site.name = 'Some Domain'
>>> my_site.save()

リセット時に2通のメールが届く可能性があるもう1つの問題は、同じメールアドレスに複数のユーザー名を関連付けることができるためです。そのかなりばかげています。これは私が取り組まなければならない次のことです。

4

5 に答える 5

12

urlテンプレートタグにURLを渡すには、nameのURLにaを指定します。urls.py

url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', 
views.password_reset_confirm, name='password_reset_confirm'),

次に、URL名のタグを使用できます

{% url 'password_reset_confirm' uidb64=uid token=token %}
于 2014-04-30T10:03:35.303 に答える
5

テンプレートタグを使用する場合urlは、URL自体ではなく、ビューを指定する必要があります。'django.contrib.auth.views.password_reset_confirm'URLConfで使用しているので、次のように使用する必要があります。

{% url 'django.contrib.auth.views.password_reset_confirm' ... %}

urlDjangoの組み込みテンプレートタグとフィルターのドキュメントのテンプレートタグの詳細。

于 2012-06-22T17:17:21.987 に答える
1

urls.pyにこれを必ず入れてください:

urlpatterns = [
    url('^', include('django.contrib.auth.urls'))
]

https://docs.djangoproject.com/en/1.8/topics/auth/default/#django.contrib.auth.views.password_reset セクション:認証ビューを参照してください

于 2017-01-20T14:14:46.290 に答える
0

組み込みのビューである可能性がありますが、それでもURLが必要です。urls.pyで定義し、password_reset_confirmビューにリンクする必要があります。

于 2012-06-21T18:23:51.507 に答える
0

このURLをメインのurls.pyファイルにコピーするだけで、URL名が認識されます。

url(r'^ reset /(?P [0-9A-Za-z _-] +)/(?P [0-9A-Za-z] {1,13}-[0-9A-Za-z] {1,20})/ $'、' django.contrib.auth.views.password_reset_confirm'、name ='password_reset_confirm')、

于 2014-12-31T04:50:38.210 に答える