【问题标题】:Django authentication problem - how can I force active users to setup a profile first?Django 身份验证问题 - 如何强制活跃用户首先设置配置文件?
【发布时间】:2011-09-17 11:44:45
【问题描述】:
我已经让自己陷入了某种困境。我经常使用 django-registration,它似乎适用于大多数情况。但是,我想要求用户在访问任何其他页面之前建立他们的个人资料(例如:人口统计信息)。
这就是我希望当前设置运行的方式:
-
访客填写注册表 --(提交)--->
-
用户邮箱验证 --(链接创建活跃用户)--->
- --(重定向到配置文件视图)--->
-
用户填写个人资料表格 --(提交)-->
- 用户现在可以访问网站的其余部分
有推荐的方法吗?
【问题讨论】:
标签:
django
forms
require
django-registration
【解决方案1】:
其中一种方法是在所有视图上使用您自己的 @profile_required 装饰器,而不是 django 内置的 login_required。
@login_required
def profile_required(func,request,*args,**kwargs):
has_profile = request.user.profile_set.count()
if not has_profile:
return redirect('create_profile')
return func(request,*args,**kwargs)
然后在每个视图上,您希望用户访问个人资料,只需:
@profile_required
def my_awesome_view(request):
...