URL-тег отказывается найти представление, даже если он есть в views.py и urls.py - PullRequest
0 голосов
/ 14 февраля 2012

Название в значительной степени подводит итог - у меня есть этот тег в шаблоне:

<a href="{% url mainapp.views.send_registration_email_view user_email=for_user.email,company_number=company.pk,organisation='org' %}">

с этим в urls.py:

(r'^send/registrationlink/(?P<user_email>[^/]+)/(?P<company_number>[^/]+)/(?P<organisation>\w+)/?$', 'mainapp.views.send_registration_email_view'),

и это в mainapp / views.py:

def send_registration_email_view(request, user_email = None, company_number = None, organisation = None):

Однако попытка просмотреть страницу, которая импортирует шаблон, в котором найдена проблемная строка, приводит к этой ошибке:

TemplateSyntaxError: Caught NoReverseMatch while rendering: Reverse for 'mainapp.views.send_registration_email_view' with arguments '()' and keyword arguments '{'organisation': u'org', 'company_number': u'UN58e2391e-51a5-11e1-bb6a-e89a8f7f9c14', 'user_email': ''}' not found.

У меня также есть эти теги в том же шаблоне, и они отлично работают:

<a href="{% url mainapp.views.registration_view for_user=for_user %}">
<a href="{% url mainapp.views.consent_view for_user=for_user %}">

Итак, кто-нибудь знает, почему Джанго не нравится то, что я делаю?

1 Ответ

3 голосов
/ 14 февраля 2012

Эта часть регулярного выражения: (?P<user_email>[^/]+) ожидает хотя бы один символ, но вы передаете пустую строку как user_email.В регулярном выражении + означает «один или несколько».Измените его на *, чтобы также принять пустую строку.

http://docs.python.org/library/re.html#regular-expression-syntax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...