下面的代码段抛出一个错误。我寻找解决方案,但找不到任何与我的方案有关的东西。任何帮助都将不胜感激。在
#urls.py
url(r'^password/reset/confirm/(?P<uidb36>[0-9A-Za-z]+)\/(?P<token>.+)/$',
app_name.password_reset_confirm,name='auth_password_reset_confirm'),
我需要在我的视图中以字符串的形式呈现电子邮件模板。在
^{pr2}$以下是html文件,为SO简化:
{% load i18n %}{% autoescape off %}
<html>
<body>
{% block reset_link %}<br />
<a href="{{ protocol }}://{{ domain }}/accounts/password/reset/confirm/{{uid}}/{{token}}">{{ protocol }}://{{ domain }}/accounts/password/reset/confirm/{{uid}}/{{token}}</a>
<br />
{% endblock %}
{% trans "Thanks for using our product!" %}<br /><br />
{% blocktrans %}Regards, <br />{{ site_name }} team{% endblocktrans %}
</body>
</html>
{% endautoescape %}
错误回溯:
NoReverseMatch Traceback (most recent call last)
/usr/local/lib/python2.7/dist-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 message = t.render(Context({"domain":"foo.com","protocol":"https"}))
/usr/local/lib/python2.7/dist-packages/django/template/base.pyc in render(self, context)
138 context.render_context.push()
139 try:
--> 140 return self._render(context)
141 finally:
142 context.render_context.pop()
/usr/local/lib/python2.7/dist-packages/django/template/base.pyc in _render(self, context)
132
133 def _render(self, context):
--> 134 return self.nodelist.render(context)
135
136 def render(self, context):
/usr/local/lib/python2.7/dist-packages/django/template/base.pyc in render(self, context)
828 for node in self:
829 if isinstance(node, Node):
--> 830 bit = self.render_node(node, context)
831 else:
832 bit = node
/usr/local/lib/python2.7/dist-packages/django/template/debug.pyc in render_node(self, node, context)
72 def render_node(self, node, context):
73 try:
---> 74 return node.render(context)
75 except Exception as e:
76 if not hasattr(e, 'django_template_source'):
/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.pyc in render(self, context)
31 old_setting = context.autoescape
32 context.autoescape = self.setting
---> 33 output = self.nodelist.render(context)
34 context.autoescape = old_setting
35 if self.setting:
/usr/local/lib/python2.7/dist-packages/django/template/base.pyc in render(self, context)
828 for node in self:
829 if isinstance(node, Node):
--> 830 bit = self.render_node(node, context)
831 else:
832 bit = node
/usr/local/lib/python2.7/dist-packages/django/template/debug.pyc in render_node(self, node, context)
72 def render_node(self, node, context):
73 try:
---> 74 return node.render(context)
75 except Exception as e:
76 if not hasattr(e, 'django_template_source'):
/usr/local/lib/python2.7/dist-packages/django/template/loader_tags.pyc in render(self, context)
52 if block_context is None:
53 context['block'] = self
---> 54 result = self.nodelist.render(context)
55 else:
56 push = block = block_context.pop(self.name)
/usr/local/lib/python2.7/dist-packages/django/template/base.pyc in render(self, context)
828 for node in self:
829 if isinstance(node, Node):
--> 830 bit = self.render_node(node, context)
831 else:
832 bit = node
/usr/local/lib/python2.7/dist-packages/django/template/debug.pyc in render_node(self, node, context)
72 def render_node(self, node, context):
73 try:
---> 74 return node.render(context)
75 except Exception as e:
76 if not hasattr(e, 'django_template_source'):
/usr/local/lib/python2.7/dist-packages/django/template/defaulttags.pyc in render(self, context)
422 # the path relative to the project. This makes a
423 # better error message.
--> 424 raise e
425 else:
426 if self.asvar is None:
NoReverseMatch: Reverse for 'django.contrib.auth.views.password_reset_confirm' with arguments '()' and keyword arguments '{u'uidb36': '', u'token': ''}' not found.
正如FoxMaSk评论的那样,您应该替换:
有:
^{pr2}$注意url中视图名的单引号,这在django1.5+中是必需的(不确定您使用的是哪个版本)。在
更重要的是,我认为错误就在这里:
呈现模板时没有将uid或令牌传递到上下文中,这就是为什么在这些变量的回溯消息中看到空值的原因:
相关问题 更多 >
编程相关推荐