0

そのため、Django で基本的なユーザー認証をセットアップしようとして、テンプレートを使用して Django 登録アプリをダウンロードしました。127.0.0.1:8000/accounts/register/ でサーバーを実行すると、基本的な登録ページが表示されます。詳細を入力し、送信をクリックすると、「NoReverseMatch at /accounts/register/」というエラーが表示されます。

Error during template rendering
In template Users/sudhasinha/mysite/mysite/registration/templates/registration/activation_email.txt,   error at line 4
'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs.
1   {% load i18n %}
2   {% trans "Activate account at" %} {{ site.name }}:
3   
4   http://{{ site.domain }}{**% url registration_activate activation_key %**}
5   
6   {% blocktrans %}Link is valid for {{ expiration_days }} days.{% endblocktrans %}
7   

これは私のactivation_email.txtがどのように見えるかです:

{% load i18n %}
{% trans "Activate account at" %} {{ site.name }}:

http://{{ site.domain }}{% url registration_activate activation_key %}

{% blocktrans %}Link is valid for {{ expiration_days }} days.{% endblocktrans %}

そして、これは私の registration_form.html がどのように見えるかです:

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

{% block content %}
<form method="post" action=".">
{{ form.as_p }}

<input type="submit" value="{% trans 'Submit' %}" />
</form>
{% endblock %}

私は Django の経験がほとんどないため、このエラーを解決するための助けをいただければ幸いです。URL は正しく設定されているようですが、必要に応じて投稿します。また、私のひどいフォーマットを許してください

4

1 に答える 1

1

エラーが示すように、テンプレートurlタグの動作が Django 1.5 で変更されました。以前はプレーン テキストのみをビュー名として使用していたため、引用符で囲む必要はありませんでした。ビュー名をコンテキスト変数として渡すことができると便利なので、構文が変更されました。この変更について説明しているドキュメントには次のように書かれています。

Django 1.5 では、url テンプレート タグの動作が変更され、最初の引数が特殊なケースの引用符で囲まれていない定数ではなく、コンテキスト変数になります。これにより、url タグでコンテキスト変数を使用して、URL 名の値を逆にすることができます。 https://docs.djangoproject.com/en/1.4/ref/templates/builtins/#url

ただし、適切に引用符を付ければ、文字列定数をそのまま使用できます。メール テンプレートは次のようになります。

http://{{ site.domain }}{% url "registration_activate" activation_key %}
于 2013-07-02T23:02:05.723 に答える