我希望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)
除了首先获取用户名之外,还有其他任何登录信息吗?
使用AbstractUser和AbstractBaseUser看起来非常相似.
from django.contrib.auth.models import AbstractUser, AbstractBaseUser
Run Code Online (Sandbox Code Playgroud)
两者有什么区别?
在向用户个人资料中添加其他字段时,例如位置,性别,雇主等,我应该在其中添加其他列django.contrib.auth.models.User并将其保存吗?或者我应该创建一个新表来保存用户配置文件信息?
此外,当用户上传个人资料图片时,我应该将其保存在同一个表格中吗?(注意这不是一个生产服务器,我只是在我的本地运行服务器上执行此操作来解决问题).谢谢
我想在Django的默认用户模型中添加一个新函数,用于检索模型类型的相关列表.
这样的Foo模型:
class Foo(models.Model):
owner = models.ForeignKey(User, related_name="owner")
likes = models.ForeignKey(User, related_name="likes")
Run Code Online (Sandbox Code Playgroud)
........
#at some view
user = request.user
foos= user.get_related_foo_models()
Run Code Online (Sandbox Code Playgroud)
怎么能实现这一目标?
要使用自定义字段扩展User对象,Django文档建议使用UserProfiles.但是,根据这个问题回答一年左右的问题:
扩展django.contrib.auth.models.User现在也更好 - 自从Django的继承代码重构在模型API中以来.
和诸如物品此布局如何与优点延伸,以与自定义字段的用户模型,一起(,而不是通过.get_profile直接从用户对象检索属性()).
所以我想知道在这个问题上是否有任何共识,或者使用其中一个的原因.甚至Django团队目前的想法是什么?
在Django项目中,我有一个自定义用户模型,它添加了一个额外的字段:
class User(AbstractUser):
company = models.ForeignKey(Company, null=True, blank=True)
Run Code Online (Sandbox Code Playgroud)
比如说,这个模型在我的应用程序中定义MyApp.models.
如何让新User模型在"身份验证和授权"下显示为原始django.contrib.auth模型?
我使用名为的自定义用户配置文件扩展了Django的用户模型UserExtension.它通过一个独特的ForeignKey Relationship与User相关,这使我能够以内嵌形式在admin中编辑它!我正在使用信号为每个新用户创建一个新的配置文件:
def create_user_profile(sender, instance, created, **kwargs):
if created:
try:
profile, created = UserExtension.objects.get_or_create(user=instance)
except:
pass
post_save.connect(create_user_profile, sender=User)
Run Code Online (Sandbox Code Playgroud)
(如此处所述:在Django中使用自定义字段扩展用户模型)问题是,如果我通过管理员创建新用户,则在保存"列user_id不唯一"时会出现IntegritiyError.似乎信号被调用两次,但我想管理员试图保存配置文件AFTERWARDS?但是如果我在系统的其他部分创建一个新用户,我需要通过信号创建!
我正在学习 Django,需要一些帮助。
我需要在我的用户模型中包含一个额外的布尔字段(我相信数据库中的 auth_user 表),并在管理用户时将其显示在管理界面中,例如此图像中的员工状态字段...
127:0.0.1:8000/管理员/用户:
和...
127.0.0.1:8000/admin/auth/user/2/change/ :
我不确定如何处理这个问题。我知道我必须扩展 AbstractUser 模型,然后可能手动将该字段添加到数据库中,但是如何更新管理界面的视图、表单和模板的新字段?我是否必须为所有这些重写 django 管理源代码,还是有更简单的方法?
我有一个django电子商务项目工作正常,直到我决定改进它.我让用户在某些服务上下订单,但每次下订单时都要输入他们的详细信息(姓名,邮件,地址等),所以我决定升级应用程序,以便用户可以添加他们的帐单地址,并可以参考在订单中或继续作为客人.
模型
class Order(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
address = models.CharField(max_length=250)
postal_code = models.CharField(max_length=20)
city = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name='items')
product = models.ForeignKey(Product,related_name='order_items')
price = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.PositiveIntegerField(default=1)
Run Code Online (Sandbox Code Playgroud)
视图
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['product'],price=item['price'], quantity=item['quantity'])
cart.clear()
return render(request,'order/created.html', {'order': order})
else:
form = …Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何使用其他功能增强authenticate方法.
例如
这个网站的前端非常简单,但管理面板呢?
我估计我应该覆盖User的Manager对象,因为authenticate可能存在于那里.我觉得这很难理解.
提前致谢!:)
python django django-models django-admin django-authentication
django ×10
python ×4
django-admin ×2
django-users ×2
admin ×1
foreign-keys ×1
inline ×1
web ×1