私はAngularJSフロントエンドからDjangoバックエンドへの通信にDjango REST Framework APIを使用しています。これは本当にうまく動作しています。私はスーパーの有用なdjango-rest-authパッケージとオプションの登録アドオンをインストールしました。認証が機能し、登録がほとんど同様に機能します。Django REST auth:電子メール確認後のdjango-allauthテンプレートのレンダリングエラー
私の問題は、新しいユーザーに送信された確認メールの確認リンクにNoReverseMatchエラーが表示されることです。 django-rest-auth FAQのおかげで、確認がデフォルトでは機能しないことがわかっていて、オーバーライドする必要がありますが、this質問の投稿が何をしたのかが反映されています。私のURL:
from allauth.account.views import confirm_email as allauthemailconfirmation
...
url(r'^rest-auth/', include('rest_auth.urls')),
url(r'^rest-auth/registration/account-confirm-email/(?P<key>\w+)/$', allauthemailconfirmation, name="account_confirm_email"),
url(r'^rest-auth/registration/', include('rest_auth.registration.urls')),
...
そして正確なエラー:
NoReverseMatch at /rest-auth/registration/account-confirm-email/ahhuvpetqmcsd6hjlgrjuru11mwfkpk9sljmfbuprxwz8elnajabr84vusnmdw7r/
Reverse for 'account_email' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
this問題のポスターは、私は1つの答えが適用されるか分かりませんが、同じ問題を持っているようだ、とそうではありません受け入れられたので、それが機能するかどうかはわかりません。
EDIT:以下の最初のコメントに基づいて
、私はaccount_email
にURL名を変更してみました。これはまだエラーになったが、エラーを再度読んだ後、私はallauthビューが確認取り扱った後、デフォルトdjango-allauth
テンプレートのレンダリング時にスローされます実現:
Error during template rendering
In template C:\Python34\lib\site-packages\allauth\templates\base.html, error at line 26
Reverse for 'account_email' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []
16 <li>{{message}}</li>
17 {% endfor %}
18 </ul>
19 </div>
20 {% endif %}
21
22 <div>
23 <strong>Menu:</strong>
24 <ul>
25 {% if user.is_authenticated %}
26
<li><a href="
{% url 'account_email' %}
">Change E-mail</a></li>
27 <li><a href="{% url 'account_logout' %}">Sign Out</a></li>
28 {% else %}
29 <li><a href="{% url 'account_login' %}">Sign In</a></li>
30 <li><a href="{% url 'account_signup' %}">Sign Up</a></li>
31 {% endif %}
32 </ul>
33 </div>
34 {% block content %}
35 {% endblock %}
36 {% endblock %}
は、だから私は、私が使用したコードを考えるとリンクされたgithubの問題からは、確認メールが正しいことになり、このエラーは、allauthビューがメールアドレスを確認した後で、テンプレートのレンダリング中に発生します。 django-rest-auth登録オプションはdjango-allauthを使用しているので、上記の26-30行のURLはinclude('rest_auth.registration.urls')
セットの一部になると期待しています。
allauthビューが確認を正しく処理している場合は、このURLを動作させるために何をする必要があるのか分かりません。しかし、私はその推測について間違っている可能性があります。
EDIT 2 私は以下のコメントからアドバイスを取り、すべてのURLをオフに印刷:
>>> show_urls(urls.urlpatterns)
^api/
^$
^\.(?P<format>[a-z0-9]+)/?$
....autogenerated viewset URLs....
^api-browse/
^login/$
^logout/$
^rest-auth/
^password/reset/$
^password/reset/confirm/$
^login/$
^logout/$
^user/$
^password/change/$
^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$
^rest-auth/registration/
^$
^verify-email/$
^account-confirm-email/(?P<key>\w+)/$
^$
....explicitly added URLs for custom viewset methods...
^register/$
^login/$
^logout$
^admin/
....admin URLs....
NoReverseMatch
エラーは単に上がらないallauth確認メールビューのURLパターン以来、今理にかなって存在しない。
私はポスターがようallauthのURLが含まれていたことがリンクされStackOverflowの質問に気づいた:私はこの行を追加すると、それが働いた
url(r'^accounts/', include('allauth.urls')),
!
はそれだけで誤植ではないですか? erorでそれは言う: 'account_email'のためのリバースとあなたはurl name = "account_confirm_email"にこれを持っている、あなたはurlで同じ名前で試すことができますか? –
アイデアをありがとう - 私はそれが 'account_confirm_email'であり、このNoReverseMatchは逆のない基本的なdjango-allauthテンプレートのURLから来ると思う。私はこのすべてを概説した元の投稿にいくつかの詳細を追加しました – dkhaupt
なぜエラーが出るのか理解できませんが、これをデバッグするためにshow_urlsコマンドでurlパターンをチェックすることはできます。このコマンドは、[django-extenstions](http://django-extensions.readthedocs.io)をインストールした場合に利用可能です。 –