{% url %} gives me NoReverseMatch error while reverse() returns the url just fine. Why?
django, django-1.4, django-registration, django-urls
Solution
I'm no expert here, but in a Django project I'm working on at the moment I use the name of the url without quotes. I just added quotes around a similar line in one of my templates and it produced the same error as your error.
Try:
{% url testing item_id=123 %}
Problem
I don't know if this SO question is of the same problem that I am about to describe, but it does share the same symptoms. Unfortunately, it still remains unresolved as I am writing. So here is my problem. I am trying to add James Bennett's django-registration app to my django project. I have pretty much finished configuring it to my needs - custom templates and urls. Just when I thought everything was good to go. I got `NoReverseMatch` error from using `{% url 'testing' item_id=123 %}` (I also tried using the view name, `myapp.views.test`, instead but no luck) in one of the custom templates required by django-registration. Interestingly, I tried `reverse('testing', kwargs={'item_id':123})` in the shell and the url was returned just fine. I thought `{% url %}` uses `reverse()` in the back-end but why did I get different outcomes? urls.py: (the URLconf of my site) ``` urlpatterns = patterns('myapp.views', url(r'^test/(?P<item_id>\d+)/$', 'test', name='testing'), ) ``` activation_email.txt: (the said template. Note it's intentionally in .txt extension as required by django-registration and that shouldn't be the cause of the problem.) ``` {% comment %}Used to generate the body of the activation email.{% endcomment %} Welcome to {{ site }}! Please activate your account by clicking on the following link: {% url 'testing' item_id=123 %} Note the activation link/code will be expired in {{ expiration_days }} days. ``` I don't know if it matters but just thought I should mention activation_email.txt is stored in the templates directory of `myapp` though it is used by `django-registration`. Also, I am using django 1.4 I have a feeling that the problem has something to do with the url namespaces, a topic that I have never understood, but it's just a naive guess. (IMO, the django documentation is great in explaining everything about django, except when it comes to url namespaces)