0

我希望用户在第一次登录后必须填写表格。使用我已经尝试过的信号:

# -*- coding: utf-8 -*-
from django.contrib.auth.signals import user_logged_in
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse

[...]

def umleiten(sender, user, request, **kwargs):
    print reverse("first_login")
    """Check if a user logged on for the first time.""" 
    return HttpResponseRedirect(reverse("first_login"))

user_logged_in.connect(umleiten)

函数“umleiten”被调用,但它不会被转发到相应的页面。有没有办法在登录调用一个函数,我可以从中转发到另一个站点。

4

1 回答 1

0

您可以并且可能应该为此使用中间件

class FirstLoginCheckMiddleware(object):
    def process_request(self, request):

        is_form_page = request.path in (
            settings.FORM_PAGE
        )

        if (not is_form_page) and request.user.is_authenticated() and (not request.user.profile.filled_out_the_form):
            return HttpResponseRedirect(settings.FORM_PAGE)
        return None

例如,您使用具有 BooleanField 的对象扩展了 User ,一旦用户执行了您希望他们执行的操作,就会检查该对象:

class UserProfile(models.Model):
     filled_out_the_form = field.BooleanField(default=False)
     # ...
于 2012-08-12T10:15:58.483 回答