python – Django – 如何以最佳方式编写用户和配置文件处理?

python – Django – 如何以最佳方式编写用户和配置文件处理?,第1张

概述我正在编写简单的网站,需要处理用户和配置文件.第一个初步想法是在用户处理中使用 django的构建,但是用户模型太窄并且不包含我需要的字段.该文档提到了用户配置文件,但用户配置文件部分已从djangobook中删除,涵盖django 1.0(理想情况下,该解决方案应与django 1.2一起使用),并且Internet上充满了不同的解决方案,而不是让选择更容易(如用户模型继承,用户配置文件和dja 我正在编写简单的网站,需要处理用户和配置文件.第一个初步想法是在用户处理中使用 django的构建,但是用户模型太窄并且不包含我需要的字段.该文档提到了用户配置文件,但用户配置文件部分已从djangobook中删除,涵盖django 1.0(理想情况下,该解决方案应与django 1.2一起使用),并且Internet上充满了不同的解决方案,而不是让选择更容易(如用户模型继承,用户配置文件和django信号等).

我想知道,如何以良好,现代,快速和安全的方式来写这个.我应该尝试扩展django内置用户模型,还是应该创建自己的用户模型,以保留我需要的所有信息?您可以在下面找到工作解决方案的一些规格和期望:

>用户应该能够注册和验证
>每个用户都应该有个人资料(或包含所有必填字段的模型)
>用户不需要django内置管理面板,但他们需要通过简单的Web表单编辑他们的配置文件/模型

请告诉我你如何在应用程序中解决这些问题,以及使用django处理用户的最佳方法是什么.任何文章/博客或代码示例的链接都非常感谢!

解决方法

users should be able to register and authenticate

django.contrib.auth是你想要的模块.请务必查看custom login forms.的文档

every user should have profile (or model with all required fIElds)

您需要设置settings.AUTH_PROfile_MODulE,如其他人所述.

有关设置用户配置文件模型的信息可用于the latest version,1.1和1.0.它尚未被删除.

users dont need django builtin admin panel,but they need to edit their profiles/models via simple web form

您可以像创建任何其他应用一样创建表单和视图;也许做一个“用户控制面板”应用程序来处理这些事情.然后,您的视图将与django.contrib.auth.models.User和django.contrib.auth.models.Group模型进行交互.您可以将其设置为执行您需要的任何 *** 作.

编辑:回答你的答案形式的问题(分页Alex Trebek)…

The second version of djangobook,covering django 1.0 (that is way closer to 1.2 than 0.96) no longer has that information anywhere,what makes me highly confused – has anything changed? Is there other,better,more secure way to handle users and their profiles? Therefore this question asked.

我不会推荐djangobook作为参考;这个主题已经过时了.用户配置文件存在,我在我的Django 1.1.1站点中使用它们;我甚至从NIS那里填充他们.

请使用我上面提供的链接.它们直接转到实际的Django文档并具有权威性.

By the way,I forgot to ask,if the way you all refer to (that is AUTH_PROfile_MODulE) will create automatically upon registration

在文档中回答.

and require the profile to exist upon any action (user withoud existing,filled profile should not exists,this is why I was thinking about extending User model somehow)?

如果调用User.get_profile(),则需要存在配置文件.

Will it get updated as well (people are mentioning ‘signals’ on varIoUs blogs related to this subject)?

它就像任何其他模型一样:只有在更改字段并调用save()时才会更新.

signal部分是您如何挂钩函数来为新用户创建配置文件:

from django.db.models.signals import post_savefrom django.contrib.auth import Userfrom myUserProfileApp import UserProfiledef make_user_profile(sender,**kwargs):    if 'created' not in kwargs or not kwargs['created']:        return    # Assumes that the `ForeignKey(User)` fIEld in "UserProfile" is named "user".    profile = UserProfile(user=kwargs["instance"])    # Set anything else you need to in the profile,then...    profile.save()post_save.connect(make_user_profile,sender=User,weak=False)

这只会为新用户创建新的配置文件.现有用户需要手动添加配置文件:

$./manage.py shell>>> from django.contrib.auth import User>>> from myUserProfileApp import UserProfile>>> for u in User.objects.all():...  UserProfile(user=u).save() # Add other params as needed....

如果你有一些用户有个人资料而有些没有,你需要做更多的工作:

>>> for u in User.objects.all():...  try:...   UserProfile(user=u).save() # Add other params as needed....  except:...   pass
总结

以上是内存溢出为你收集整理的python – Django – 如何以最佳方式编写用户和配置文件处理?全部内容,希望文章能够帮你解决python – Django – 如何以最佳方式编写用户和配置文件处理?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1195094.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存