Python 第一次登录时打开页面

Python 第一次登录时打开页面,python,django,Python,Django,我希望用户在第一次登录后必须填写表单。用我已经尝试过的信号: # -*- 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, **kwar

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

# -*- 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”,但不会将其转发到相应的页面。
是否有一种方法可以在登录后调用一个函数,我可以从该函数转发到另一个站点。

您可以而且可能应该使用中间件

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
其中,例如,您使用一个对象扩展了用户,该对象有一个布尔字段,一旦用户执行了您希望他们执行的操作,该字段就会被检查:

class UserProfile(models.Model):
     filled_out_the_form = field.BooleanField(default=False)
     # ...

请在你提到的url的地方贴上代码,它将在第一次登录时调用,以及第一次登录代码。谢谢!我必须将(settings.form\u page)中的is\u form\u page=request.path更改为(request.path)中的is\u form\u page=settings.FIRST\u LOGIN\u form\u page