Spe*_*ccy 7 django logout django-views django-authentication
在django/contrib/auth/views.py那里有注销视图的定义:
def logout(request, next_page=None,
template_name='registration/logged_out.html',
redirect_field_name=REDIRECT_FIELD_NAME,
current_app=None, extra_context=None):
Run Code Online (Sandbox Code Playgroud)
我想添加extra_context来摆脱我注销时出现的'Logged out'标题
所以我在我的网址中尝试这个:
(r'^accounts/logout/$', logout(extra_context={'title':'something else'}) ),
Run Code Online (Sandbox Code Playgroud)
但后来我得到这个错误:logout()至少需要1个非关键字参数(0给出)我做错了什么?ps:当我这样做的时候
(r'^accounts/logout/$', logout ),
Run Code Online (Sandbox Code Playgroud)
它有效,但后来我得到了"退出"文字......
谢谢,弗雷德
Ism*_*awi 11
当你写作时logout(extra_context={'title':'something else'}),你实际上是logout在URLconf中调用,这将无法正常工作.任何URLconf元组都可以有一个可选的第三个元素,它应该是一个传递给视图函数的额外关键字参数的字典.
(r'^accounts/logout/$', logout, {'extra_context':{'title':'something else'}}),
Run Code Online (Sandbox Code Playgroud)
或者,您可以编写自己的视图,调用logout传入您想要的任何参数 - 这通常是在更复杂的情况下"扩展"基于函数的通用视图的方式.
添加我对 django 2.0 的发现作为此线程上的先前答案不再适用于最新的 django 版本。
在 2.0 中,将 URL 添加到 urls.py 文件的正确方法是使用 path():
from django.urls import path
from django.contrib.auth import views as auth_views
path('accounts/logout/', auth_views.LogoutView.as_view(
extra_context={'foo':'bar'}
)),
Run Code Online (Sandbox Code Playgroud)
这里要突出显示的代码片段是 .as_view() 函数。Django 2.0 将身份验证视图实现为类。您可以在身份验证视图文档中阅读有关此内容的更多信息
然后,您可以使用 `.as_view() 将类“转换”为视图,并且您可以将源代码中定义的任何类属性作为命名参数传入。
传入 extra_context (默认为 None)会自动将这些上下文变量暴露给您的模板。
您可以通过以下 python 路径访问 LogoutView 的源代码:django.contrib.auth.views
在这里,您可以看到可以传递给 LogoutView 和其他身份验证视图类的其他类属性。
| 归档时间: |
|
| 查看次数: |
6375 次 |
| 最近记录: |