有没有办法限制仅对某些 django 用户组访问 url 模式?例如,以 开头的所有内容都/settings/应该只能由管理组访问。
或者也许可以创建一个新的装饰器,例如@group("administration")并将其添加到仅限于该组的每个视图?
如果可能的话,我个人更喜欢第二种方式。
如何在自定义用户模型中删除users表和User类中的密码?
我正在使用django-rest-framework令牌认证,所以我不需要密码字段.
这是我的模型:
class CustomUserManager(BaseUserManager):
def create_user(phone, name=None):
return User.objects.create(
name=name, phone=phone)
def create_superuser(name, phone=None):
pass
class User(AbstractBaseUser):
"""
Custom django User model.
"""
name = models.CharField(max_length=30,
null=True, validators=[validate_name])
phone = PhoneNumberField(unique=True, blank=False, null=False)
objects = CustomUserManager()
USERNAME_FIELD = 'phone'
REQUIRED_FIELDS = []
Run Code Online (Sandbox Code Playgroud) python django django-models django-users django-rest-framework
我尝试使用 OneToOneField 扩展 django auth 用户模型,但无法解决此问题。
重复的键值违反了唯一约束“users_profile_user_id_key”详细信息:键(user_id)=(67)已存在。
我查了一下这个问题,有人说数据库不同步。
视图.py
def create_profile(request):
if request.method == 'POST':
user_form = UserRegistrationForm(request.POST)
profile_form = UserProfileForm(request.POST)
if user_form.is_valid() and profile_form.is_valid():
registration = user_form.save()
profile = profile_form.save(commit=False)
profile.user = registration
profile.save()
return redirect('index')
else:
user_form = UserRegistrationForm()
profile_form = UserProfileForm()
return render(request, 'registration/registration.html',
{'user_form': user_form,
'profile_form': profile_form})
Run Code Online (Sandbox Code Playgroud)
模型.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
user_image = models.ImageField(upload_to="blog/assets",
default="blog/assets/people-photo.jpg",
null=True)
birth_date = models.DateField(null=True, blank=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def …Run Code Online (Sandbox Code Playgroud) 如何为我创建的新用户设置默认组?我没有创建用户的自定义模型,我的django版本是1.11.
因此,我是Django的新手。尽管我的代码在遵循Django文档“在Django中自定义身份验证”后可以工作,但我不知道示例中的self.model(...)实际如何工作,它的来源以及如何与'自'。
这是在文档底部找到的示例。
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser
)
class MyUserManager(BaseUserManager):
def create_user(self, email, date_of_birth, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
-> user = self.model(
email=self.normalize_email(email),
date_of_birth=date_of_birth,
)
user.set_password(password)
user.save(using=self._db)
return user
...
Run Code Online (Sandbox Code Playgroud) python authentication django django-authentication django-users
在我的 html 上,我可以使用以下语法检查用户是否已登录:
{% if user.is_authenticated %}
<div id="display_something">...</div>
{% else %}
<p>Please Log in</p>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想检查用户是否为我呈现的每个 html 文件进行了身份验证,我该怎么办?我是否必须{% if ... %}为每个 html 文件复制和粘贴该块?Django 处理这个问题的方式是什么?什么是好的做法?
我目前正在开发 Django 应用程序,并且尝试将当前用户设置为模型上的默认用户,但它不起作用。
created_by = models.ForeignKey(User, default=request.user, null=True, blank=True, on_delete=models.DO_NOTHING, related_name='created_by')
Run Code Online (Sandbox Code Playgroud)
我尝试重写 save() 方法,但它也不起作用,有人对此事有任何经验吗?
预先非常感谢您的帮助
我正在寻找一种在使用 queryset 设置变量值后获取变量所有属性的方法。
例如...请参阅下面的代码...使用 user.id 或 user.first_name 我可以获得该属性的值。但是,如果我想检查它具有的所有其他属性?有什么办法可以得到。
如果我们使用user那么它只会返回 这就是我们在 admin.py 中定义的内容。
from django.contrib.auth.models import User
user=User.objects.get(id=1)
user.first_name # Will return some value say testUser
user.id # will return some value say 1
Run Code Online (Sandbox Code Playgroud) 如何在管理员用户编辑中隐藏字段?主要是我想在某些例外中隐藏权限和组选择,但排除变量不起作用:/