如何在Django注册中解决用户注册和激活电子邮件错误?

时间:2013-07-02 22:52:05

标签: django django-forms django-templates django-views

所以我只是尝试在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的经验很少,并希望得到一些帮助来解决这个错误。我的网址似乎设置正确但我会在需要时发布。还原谅我可怕的格式化

1 个答案:

答案 0 :(得分: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 %}