Python 德扬戈。登录后重定向用户

Python 德扬戈。登录后重定向用户,python,django,Python,Django,我是Django的新手,我需要你的帮助 我正在基于基于类的视图构建我的应用程序。对于使用默认django.contrib.auth.models.User类和UserInfo类的一对一关系来存储附加信息(如个人资料照片等)的登录I: 型号.py class UserInfo(models.Model): user = models.OneToOneField(User) birth_date = models.DateField() avatar = models.Fil

我是Django的新手,我需要你的帮助

我正在基于基于类的视图构建我的应用程序。对于使用默认
django.contrib.auth.models.User
类和
UserInfo
类的一对一关系来存储附加信息(如个人资料照片等)的登录I:

型号.py

class UserInfo(models.Model):
    user = models.OneToOneField(User)
    birth_date = models.DateField()
    avatar = models.FilePathField()
urlpatterns = patterns('',
    url(r'^$',      Index.as_view(), name='index'), #Returns page with login form.
    url(r'^login$', Index.as_view(), name='login'), #Proceed login form and redirects to homepage.
    url(r'^home/id(?P<pk>\d+)$',  login_required(Home.as_view(), login_url='/'),  name='home'),
)
#Login proceed here
class Index(generic.FormView):
    template_name = 'index.html'
    form_class = AuthenticationForm
    success_url = '/home/id'

    def post(self, request, *args, **kwargs):
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username = username, password = password)
        if user is not None and user.is_active:
            login(request, user)
            return redirect('/home/id', pk = user.id)
        else:
            return redirect('/', {'error' : 'Incorrect login or password'})
class Home(generic.DetailView):
    model = UserInfo
    template_name = 'home.html'
登录成功后,我想将
UserInfo
数据传递到主页(定义为
DetailView
)。所以现在我有这样的东西:

url.py

class UserInfo(models.Model):
    user = models.OneToOneField(User)
    birth_date = models.DateField()
    avatar = models.FilePathField()
urlpatterns = patterns('',
    url(r'^$',      Index.as_view(), name='index'), #Returns page with login form.
    url(r'^login$', Index.as_view(), name='login'), #Proceed login form and redirects to homepage.
    url(r'^home/id(?P<pk>\d+)$',  login_required(Home.as_view(), login_url='/'),  name='home'),
)
#Login proceed here
class Index(generic.FormView):
    template_name = 'index.html'
    form_class = AuthenticationForm
    success_url = '/home/id'

    def post(self, request, *args, **kwargs):
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username = username, password = password)
        if user is not None and user.is_active:
            login(request, user)
            return redirect('/home/id', pk = user.id)
        else:
            return redirect('/', {'error' : 'Incorrect login or password'})
class Home(generic.DetailView):
    model = UserInfo
    template_name = 'home.html'
home.py

class UserInfo(models.Model):
    user = models.OneToOneField(User)
    birth_date = models.DateField()
    avatar = models.FilePathField()
urlpatterns = patterns('',
    url(r'^$',      Index.as_view(), name='index'), #Returns page with login form.
    url(r'^login$', Index.as_view(), name='login'), #Proceed login form and redirects to homepage.
    url(r'^home/id(?P<pk>\d+)$',  login_required(Home.as_view(), login_url='/'),  name='home'),
)
#Login proceed here
class Index(generic.FormView):
    template_name = 'index.html'
    form_class = AuthenticationForm
    success_url = '/home/id'

    def post(self, request, *args, **kwargs):
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username = username, password = password)
        if user is not None and user.is_active:
            login(request, user)
            return redirect('/home/id', pk = user.id)
        else:
            return redirect('/', {'error' : 'Incorrect login or password'})
class Home(generic.DetailView):
    model = UserInfo
    template_name = 'home.html'
不幸的是,它不起作用。你能帮我理解它应该如何工作吗?
以及如何在我的
home.html
页面中获取
UserInfo
数据?

您不应该在URL重定向中传递数据,因为这本身就是安全的,并且容易受到各种攻击()

相反,您应该使用重定向来传递数据。特别是,在成功/错误消息的情况下