相关疑难解决方法(0)

使用Django中的自定义字段扩展用户模型

使用自定义字段扩展User模型(与Django的身份验证应用程序捆绑在一起)的最佳方法是什么?我也可能希望使用该电子邮件作为用户名(用于身份验证).

我已经看到了一些 方法,但无法决定哪一个是最好的.

django django-models django-authentication django-users

415
推荐指数
10
解决办法
20万
查看次数

Django - 用电子邮件登录

我希望django通过电子邮件验证用户,而不是通过用户名.一种方法是提供电子邮件值作为用户名值,但我不希望这样.原因是,我有一个网址/profile/<username>/,因此我没有网址/profile/abcd@gmail.com/.

另一个原因是所有电子邮件都是唯一的,但有时会发生用户名.因此我将自动创建用户名为fullName_ID.

我怎样才能让Django通过电子邮件进行身份验证?

这就是我创建用户的方式.

username = `abcd28`
user_email = `abcd@gmail.com`
user = User.objects.create_user(username, user_email, user_pass)
Run Code Online (Sandbox Code Playgroud)

这是我登录的方式.

email = request.POST['email']
password = request.POST['password']
username = User.objects.get(email=email.lower()).username
user = authenticate(username=username, password=password)
login(request, user)
Run Code Online (Sandbox Code Playgroud)

除了首先获取用户名之外,还有其他任何登录信息吗?

django

53
推荐指数
7
解决办法
4万
查看次数

对于django管理员,如何在用户模型中添加字段并在管理员中对其进行编辑?

我试图更好地理解django管理员,同时,我正在尝试向当前用户管理员添加一个字段.在models.py我做过

User.add_to_class('new_field', models.BooleanField(default=False))
Run Code Online (Sandbox Code Playgroud)

在admin.py中我有以下内容(字段集基本上只是从django/contrib/auth/admin.py复制)

class AdjUserAdmin(UserAdmin):
  list_display  = UserAdmin.list_display + ('new_field',)
  list_filter   = UserAdmin.list_filter + ('new_field',)

  fieldsets = UserAdmin.fieldsets
  fieldsets[1][1]['fields'] = ('first_name','last_name','email','new_field')
Run Code Online (Sandbox Code Playgroud)

问题是,当我这样做时,我得到错误:

AdjUserAdmin.fieldsets[4][1]['fields']' refers to field 'new_field' that is missing from the form.

我看过UserChangeForm,但看起来它已经正确地将User作为模型.我不确定new_field表格中缺少原因.

谢谢

关于这是臭臭的代码

我知道这是一个臭臭的猴子修补方式去做这个,但是子类化给我的问题主要是出于这些原因..如果我能按照上面说明的方式让它工作,我会很开心..也许很臭.

关于推荐的方式

我所知道的创建用户配置文件的推荐方式,只是在特定情况下,我看不到的优点创造一个全新的表,具有附加调用数据库的时候我要的存储是一个额外的一些信息,如is_private某些信息.如果我存储更多信息,那么我同意,建立用户配置文件更可取.

django django-admin

9
推荐指数
2
解决办法
1万
查看次数

何时在Django模型中使用一对一关系

我读过几个 地方(参见第二个答案),Django模型中的一对一关系几乎总是只用于继承,或访问其他无法访问的模型(如Django用户模型).

但是,似乎有些情况下你有一个对象,它总是只有一个另一个对象的实例,你在逻辑上想要将这两个对象分开.比如说,您的应用程序正在存储有关汽车的信息.每辆车只有一个司机,每个司机只开一辆车.将汽车和驾驶员分成两个独立的车型是不合理的?

python django one-to-one models

7
推荐指数
1
解决办法
8762
查看次数

根据用户动态设置或更改默认语言 - Django

有没有办法LANGUAGE_CODE在单击按钮(发送请求)时动态更改settings.py 中变量的值?

我希望用户为自己的帐户设置自己的"默认语言" .

现在,用户可以使用下拉列表选择他们的首选语言,并且网站被完美翻译,并且由于Django选择了浏览器的语言,用户在重新打开网站后不需要重新选择他们的语言浏览器.

但是当他们从不同的浏览器打开网站时,默认语言又是"英语",因为在settings.py中设置了LANGUAGE_CODE变量en-us.

所以我想要做的是让每个用户都可以选择他们想要的语言作为默认语言.我想通过制作另一个(类似的)下拉菜单并要求用户选择他们想要的语言作为"默认"并按下save按钮来执行此操作,并且在保存时,我想将LANGUAGE_CODE值更改为由用户(即动态更改).但我不知道如何LANGUAGE_CODE动态改变价值.

此外,这种方法还有一个问题.根据Django的文档,即使我能够LANGUAGE_CODE动态更改此变量,也会使网站将所选语言作为所有用户的默认语言,而不仅仅是针对那个更改它的特定用户:

LANGUAGE_CODE:

  • 如果未使用区域设置中间件,则会决定向所有用户提供哪种翻译.

我研究了很多,但找不到适合我的解决方案.我对国际化很新.请帮忙.

django internationalization

3
推荐指数
1
解决办法
5615
查看次数