包装第三方Django应用程序视图时出错? (Facebook,django-socialregistration,django-profiles)

时间:2010-10-20 19:04:54

标签: django facebook views

我正在使用 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中正确安装。谁知道我做错了什么?

1 个答案:

答案 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。