我有一个要求,我必须先通过电子邮件注册用户。所以,我选择django-registraton,我设法将tat模块集成到我的django项目中。 成功登录后,该页面将重定向到“registration / profile.html”。 我需要访问身份验证中使用的用户对象。 我需要此对象来更改包含有关我的用户的自定义配置文件信息的模型。我已经在models.py
中定义了这个以下是我用来重定向到我的模板的网址.. URL(R '^简档/ $',使用direct_to_template,{ '模板': '注册/ profile.html'}),
所以我的问题是这个...登录后,用户必须被带到需要填写的个人资料页面。 有关如何实现这一目标的任何想法?
答案 0 :(得分:1)
我之前已经建立了类似的东西。在我的情况下,我通过管理界面定义了新用户,但基本问题是相同的。我需要在首次登录时显示某些页面(即用户设置)。
我最终在UserProfile模型中添加了一个标志(first_log_in,BooleanField)。我在我的首页的视图功能中设置了一个检查它来处理路由。这是粗暴的想法。
views.py:
def get_user_profile(request):
# this creates user profile and attaches it to an user
# if one is not found already
try:
user_profile = request.user.get_profile()
except:
user_profile = UserProfile(user=request.user)
user_profile.save()
return user_profile
# route from your urls.py to this view function! rename if needed
def frontpage(request):
# just some auth stuff. it's probably nicer to handle this elsewhere
# (use decorator or some other solution :) )
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
user_profile = get_user_profile(request)
if user_profile.first_log_in:
user_profile.first_log_in = False
user_profile.save()
return HttpResponseRedirect('/profile/')
return HttpResponseRedirect('/frontpage'')
models.py:
from django.db import models
class UserProfile(models.Model):
first_log_in = models.BooleanField(default=True, editable=False)
... # add the rest of your user settings here
将setting.py上的AUTH_PROFILE_MODULE设置为指向模型非常重要。即
AUTH_PROFILE_MODULE = 'your_app.UserProfile'
应该有用。
请查看this article以获取有关UserProfile的进一步参考。我希望有所帮助。 :)