我是django的新手,我有以下模板:
{% if settings.LOGIN_SYSTEM %}
<a href="{{ settings.LOGOUT_URL }}?target={{ settings.LOGOUT_REDIRECT_URL}}">{% trans %}sign out{% endtrans %}</a>
{% endif %}
我还有一个清除所有会话的视图:
class LogoutView(TemplateView):
redirect_field_name = "target"
def get(self, *args, **kwargs):
我想确保登录信号通过LogoutView get方法。我可以从模板中调用视图方法吗?
如果是这样,一个例子会很棒。
答案 0 :(得分:1)
注销使用POST而不是GET。这是一个architecture issue。 因此,要注销,您应该发布一个帖子请求,如下例所示。
退出模板表单
<form action="{% url 'logout' %}" method="post" >
{% csrf_token %}
<input type="submit" value="Logout" />
</form>
退出网址
urlpatterns = patterns('',
url(r'^logout/$', LogoutView.as_view(), name='logout'),
# other urls...
)
退出视图
from django.contrib.auth import logout
class LogoutView(ProcessFormView):
def post(self, request, *args, **kwargs):
logout(request)
return redirect('login-url-name')
答案 1 :(得分:0)
示例注销
@require_POST
def logout(request):
auth.logout(request)
return redirect('/')