包装第 3 方 Django 应用程序的视图时出错? (Facebook、django-socialregistration、django-profiles)
Posted
技术标签:
【中文标题】包装第 3 方 Django 应用程序的视图时出错? (Facebook、django-socialregistration、django-profiles)【英文标题】:Error when wrapping the view of a 3rd-party Django app? (Facebook, django-socialregistration, django-profiles) 【发布时间】: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 响应覆盖应用程序的视图:***.com/questions/1649351/… 这看起来很像你问的另一个问题 ***.com/questions/3982443/… 。然而,视图并没有什么神奇之处——如果找不到模块,它就不会在你的 python 路径中。 【参考方案1】:好的,正如 Tim 所说,这个特殊的问题与路径有关。
更大的图景,完成我想要的方法(在 django-socialregistration 创建用户时创建链接的 UserProfile)最好通过将自定义表单传递到 socialregistration 的“设置”视图来完成,正如作者在此建议的那样:@987654321 @
在你的 urls.py 文件中截取合适的 url:
from myapp.forms import UserForm
url('^social/setup/$', 'socialregistration.views.setup',
'form_class': UserForm , name='socialregistration_setup'),
(r'^social/', include('socialregistration.urls')),
您可以将您的用户表单基于 socialregistration 自己的用户表单,添加代码以填充和保存用户配置文件。
【讨论】:
请注意,如果您有 SOCIALREGISTRATION_GENERATE_USERNAME = True,这将无法开箱即用以上是关于包装第 3 方 Django 应用程序的视图时出错? (Facebook、django-socialregistration、django-profiles)的主要内容,如果未能解决你的问题,请参考以下文章
在 Eclipse 中使用 aar - 为啥第 3 方活动在构建时解决而不是运行时解决?