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 的经验很少,希望能得到一些帮助来解决这个错误。我的网址似乎设置正确,但如果需要我会发布。也请原谅我可怕的格式

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 回答