【发布时间】:2010-10-20 19:04:53
【问题描述】:
我正在使用 django-socialregistration 来管理我的网站与 Facebook 的连接。
当用户单击“与 Facebook 连接”按钮时,我能够自动创建一个新的 Django 用户并让他们登录。但是,我还需要为他们创建一个包含他们 Facebook 的 UserProfile(我的 AUTH_PROFILE_MODULE)记录个人资料信息(电子邮件、姓名、位置)。
我认为我需要覆盖 socialregistration 的“设置”视图,以便我可以使用 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()):
...
当我尝试上述解决方案时,我收到错误“ViewDoesNotExist at /social/setup/:无法导入 myapp.views.socialreg。错误是:没有名为 socialregistration.views 的模块” .
当我不尝试覆盖视图时,socialregistration 应用程序运行良好,因此它可能已正确安装在站点包中。有谁知道我做错了什么?
【问题讨论】:
-
我也在探索使用装饰器,而不是根据这个 SO 响应覆盖应用程序的视图:stackoverflow.com/questions/1649351/…
-
这看起来很像你问的另一个问题 stackoverflow.com/questions/3982443/… 。然而,视图并没有什么神奇之处——如果找不到模块,它就不会在你的 python 路径中。