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 に答える