我使用Django函数登出并且它不会显示我的模板。这里的代码:
Views.py
class Logout(View):
#import pdb; pdb.set_trace()
template_name = ['cost_control_app/logout.html']
def get(self, request, *args, **kwargs):
return render(request, self.template_name)
def logout_view(request):
logout(request)
print ("ya")
return render(request, self.template_name)
Urls.py
urlpatterns = patterns(
'',
url(r'^logout/$', views.Logout.as_view(), name = "logout"),
)
模板:
logout.html
{% extends 'base_cost_control.html' %}
{% block contentsubbase %}
<head>
<body>
<div>
<h2> Logged out succefully </h2>
<br>
<a href="{% url 'cost_control_app:login' %}">Iniciar sesión</a>
</div>
</body>
</head>
{% endblock contentsubbase %}
在我的主页面中使用href图层指向该网址:
<a href="{% url 'cost_control_app:logout' %}">Logout</a>
但它不能正常工作,它只会将我重定向到一个名为logout的完整空白页面,如果我在浏览器中返回,我仍然会登录。
答案 0 :(得分:1)
将template_name定义为字符串
template_name =“cost_control_app / logout.html”
您的模板应放在项目app_folder/templates/app_name
您还可以在settings.py中定义template_dirs,如下所示
TEMPLATE_DIRS =( os.path.join(BASE_DIR,'templates'), )
现在在项目中创建一个名为templates
的文件夹,并将模板放在与app_name
对应的文件夹中的每个应用上
步骤3不是必需的,只是一个替代
答案 1 :(得分:0)
Django 3.1:如果不需要控制注销过程,可以让Django的标准认证系统来处理。无需编写视图或修改 urlpatterns,只需将用户定向到您在 GET 请求中指定的模板:
<a href="{% url 'logout' %}?next=myapp/mytemplates/logout.html">Logout now</a>
这假设您有默认设置(已安装应用程序中的“django.contrib.auth”,中间件中的“django.contrib.auth.middleware.AuthenticationMiddleware”和模板中的“django.contrib.auth.context_processors.auth”上下文处理器)在 settings.py 中。