0

我对 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 获取方法。我可以从模板调用视图方法吗?

如果是这样,一个例子会很棒。

4

2 回答 2

1

要注销,请使用 POST 而不是 GET。这是一个架构问题。因此,要注销,您应该像以下示例一样发出发布请求。

注销模板表单

<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')
于 2013-06-23T00:23:38.277 回答
0

示例注销

@require_POST
def logout(request):
    auth.logout(request)
    return redirect('/')
于 2013-04-18T06:37:01.350 回答