如何在我的Django模板中使用{%url logout%}?

时间:2014-02-13 08:22:13

标签: django django-templates

我的Django应用程序的站点范围urls.py文件如下所示:

urlpatterns = patterns('',
    url(r'^$', include('myApp.urls')),
    url(r'^admin/', include(admin.site.urls)),
    url (
        r'^accounts/register/$', 
        RegistrationView.as_view(form_class=extendedRegistrationForm),
    ),  
    url(r'^accounts/', include('registration.backends.default.urls')),
    url(r'^', include('myApp.urls')),
)

我也有一个特定于myApp的urls.py但我没有在这里显示,因为我认为它不相关。

在我的模板文件中,我有:

{% url logout %}

它给了我这个错误:

'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs.

当我将模板更改为:

{% url 'logout' %}

它给了我以下错误:

Reverse for 'logout' with arguments '()' and keyword arguments '{}' not found. 0 pattern(s) tried: []

如何在我的视图中添加注销链接?

3 个答案:

答案 0 :(得分:7)

添加一个这样的注销网​​址:

url(r"^logout/$", "django.contrib.auth.views.logout_then_login",
    name="logout"),

正确的模板语法是:

{% url 'logout' %}

答案 1 :(得分:3)

您的django.contrib.auth中未包含urls.py个网址,因此没有退出网址。

尝试添加类似

的内容
url(r'^auth/', include('django.contrib.auth.urls')),

答案 2 :(得分:0)

在django 3.0中,{% url 'admin:logout' %}可以完美地工作。