Django将注销过程重定向到视图

时间:2013-04-18 06:19:06

标签: django django-login

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

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

2 个答案:

答案 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('/')