65👍
As of Django 1.10:
As of Django 1.10, it is no longer possible to use the string 'django.contrib.auth.views.login'
in url()
or the {% url %}
tag.
First, change your url patterns to use the callable, and name the url pattern. For example:
from django.contrib.auth import views as auth_views
url_patterns = [
url(r'^login$', auth_views.login, name='login'),
]
Then update your url tag to use the same name:
{% url 'login' %}
As of Django 1.5:
You don’t need {% load url from future %}
any more, just use the quoted syntax ({% url 'django.contrib.auth.views.login' %}
) and you’re done (see the Django 1.5 release notes).
As of Django 1.3:
Note that as of Django 1.3 (as Karen Tracey points out below), the correct way to fix this is to add:
{% load url from future %}
at the top of your template, and then use:
{% url 'django.contrib.auth.views.login' %}
Prior to Django 1.3:
Judging by that error message (note the double single-quotes around the path to the view), I’d guess that the {% url ... %}
tag doesn’t want quotes, try:
{% url django.contrib.auth.views.login %}
9👍
The syntax with quotes is new in Django 1.3. The correct way to fix the error on 1.3 forward would be to incldue {% load url from future %} in the template.
- [Django]-Django – get user logged into test client
- [Django]-Django get the static files URL in view
- [Django]-What's the best way to handle Django's objects.get?