我正在使用 django-socialregistration 来管理我的网站与Facebook的关联。
当用户点击“与Facebook连接”按钮时,我可以自动创建一个新的Django用户并将其登录。但是,我还需要为他们创建一个包含他们Facebook的UserProfile(我的AUTH_PROFILE_MODULE)记录个人资料信息(电子邮件,姓名,地点)。
我相信我需要覆盖社交注册的“设置”视图,这样我才能做我需要用UserProfile做的事情。我已将以下内容添加到项目的urls.py文件中:
url(r'^ social / setup / $','myapp.views.socialreg.pre_setup',name ='socialregistration_setup'),
我的自定义视图位于“/myapp/views/socialreg.py”,如下所示:
from socialregistration.forms import UserForm
def pre_setup(request, template='socialregistration/setup.html',
form_class=UserForm, extra_context=dict()):
# will add UserProfile storage here...
return socialregistration.views.setup(request, template, form_class, extra_context)
我重写的社会注册视图签名看起来像这样:
def setup(request, template='socialregistration/setup.html',
form_class=UserForm, extra_context=dict()):
...
我在/ social / setup /时收到错误“ViewDoesNotExist:无法导入myapp.views.socialreg。当我尝试上面的解决方案时,错误是:没有名为socialregistration.views的模块”
当我不尝试覆盖视图时,socialregistration应用程序正常工作,因此可能在site-packages中正确安装。谁知道我做错了什么?
答案 0 :(得分:2)
好的,正如蒂姆所说,这个特殊的问题与路径有关。
更大的图片,完成我想要的方式(当django-socialregistration创建用户时创建链接的UserProfile)最好通过将自定义表单传递到socialregistration的“设置”视图来完成,如作者在此处所建议的那样:{{ 3}}
拦截urls.py文件中的相应网址:
from myapp.forms import UserForm
url('^social/setup/$', 'socialregistration.views.setup',
{ 'form_class': UserForm }, name='socialregistration_setup'),
(r'^social/', include('socialregistration.urls')),
您可以将UserForm基于社交注册的自己的UserForm,添加代码以填充和保存UserProfile。