栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django注册和Django个人资料,使用你自己的自定义表单

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django注册和Django个人资料,使用你自己的自定义表单

你已经准备就绪,你已经成功构建了一个自定义表单,该表单将替换默认表单。但是,你尝试使用模型窗体上的save()方法进行自定义处理。这在旧版本的django-registration中是可能的,但是从你在URL conf中指定后端使用v0.8的事实可以看出。

该升级指南说:

以前,在注册期间用于收集数据的表单应该实现一个save()方法,该方法将创建新的用户帐户。这已不再是这种情况; 创建帐户由后端处理,因此任何自定义逻辑都应移至自定义后端,或将侦听器连接到注册过程中发送的信号。

换句话说,既然你使用的是0.8版,则窗体上的save()方法将被忽略。你需要使用自定义后端或信号进行自定义处理。我选择创建一个自定义后端(如果有人使用信号处理此功能,请发布代码-我无法使其正常工作)。你应该能够对其进行修改以保存到你的自定义配置文件。

  1. 在你的应用中创建一个regbackend.py。
  2. 将register()方法从DefaultBackend复制到其中。
  3. 在方法的最后,执行查询以获取相应的User实例。
  4. 将其他表单字段保存到该实例中。
  5. 修改URL conf,使其指向自定义表单和自定义后端

因此,URL conf为:

url(r'^accounts/register/$',    register,    {'backend': 'accounts.regbackend.RegBackend','form_class':MM_RegistrationForm}, name='registration_register'    ),

regbackend.py具有必需的导入,并且基本上是DefaultBackend的副本,仅带有register()方法,并添加了:

    u = User.objects.get(username=new_user.username)    u.first_name = kwargs['first_name']    u.last_name = kwargs['last_name']    u.save() 


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390538.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号