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

Saq*_*Ali 6 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')),
)
Run Code Online (Sandbox Code Playgroud)

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

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

{% url logout %}
Run Code Online (Sandbox Code Playgroud)

它给了我这个错误:

'url' requires a non-empty first argument. The syntax changed in Django 1.5, see the docs.
Run Code Online (Sandbox Code Playgroud)

当我将模板更改为:

{% url 'logout' %}
Run Code Online (Sandbox Code Playgroud)

它给了我以下错误:

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

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

aro*_*cks 9

像这样添加一个注销网址:

url(r"^logout/$", "django.contrib.auth.views.logout_then_login",
    name="logout"),
Run Code Online (Sandbox Code Playgroud)

正确的模板语法是:

{% url 'logout' %}
Run Code Online (Sandbox Code Playgroud)


Rem*_*ich 3

您的 中没有包含django.contrib.auth的 URL urls.py,因此没有注销 URL。

尝试添加类似的东西

url(r'^auth/', include('django.contrib.auth.urls')),
Run Code Online (Sandbox Code Playgroud)