django - Django AUTHENTICATION AND AUTHORIZATION 组和权限想要创建经过验证的用户
问题描述
嗨 Djangonauts,我是 Django 新手,请原谅逻辑或代码中的任何愚蠢错误。
简介: 我正在构建一个网络应用程序,成员可以在其中撰写有关某个主题的帖子并提供有关该主题的课程。示例 会员可以写一篇关于骑自行车骑自行车的博客并提供相关课程。
我想要什么: 我希望想要提供课程的成员得到验证。示例:会员必须填写一份表格,其中包含他们的详细信息,例如……姓名、地址和带照片的身份证件。另外支付 9.99 美元的费用以进行验证。在管理员(在这种情况下是我)检查一切是否良好后,我会批准他们。然后他们将成为“认证会员”并能够提供课程
到目前为止我所拥有的:现在会员可以提供课程,因为没有经过验证的条款
class Event(models.Model):
user = models.ForeignKey(User, related_name='seller')
post = models.ForeignKey(Post, related_name='course')
price = models.DecimalField(max_digits=6, decimal_places=2)
stock = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(35)])
date = models.DateField()
time_from = models.TimeField()
time_to = models.TimeField()
event_types = (
('1', 'Webinar'),
('2', 'Actual Meet'),
)
event_choice = models.CharField(max_length=1, choices=event_types)
def get_absolute_url(self):
return reverse('posts:single', kwargs={'username': self.user.username,
'slug': self.post.slug})
def __str__(self):
return 'Meet for ' + self.post.title
我打算怎么做:我打算在 Django 的管理员 AUTHENTICATION AND AUTHORIZATION 中添加一个组
Home › Authentication and Authorization › Groups › Add group
Name: Verified
Permissions: Chosen permissions
event| event| Can add event
event| event| Can change event
event| event| Can delete event
现在我从这里做什么?:到目前为止我做的事情是否正确,我如何从这里得到它。我是否创建一个名为verified
并添加 forms.py 的模型来验证成员。权限如何出现在图片中。
我的猴子补丁(对于@Ojas Kale,不是问题的一部分)
class Contact(models.Model):
user_from = models.ForeignKey(User, related_name='supporter')
user_to = models.ForeignKey(User, related_name='leader')
def __str__(self):
return '{} follows {}'.format(self.user_from, self.user_to)
User.add_to_class('following',
models.ManyToManyField('self', through=Contact, related_name='followers', symmetrical=False))
解决方案
一种方法是在用户中添加一个 is_verified 列。有多种方法可以做到这一点。但是从 abstractUser 扩展可能是最直接和最适合您的情况,因为类django.contrib.auth.models.AbstractUser提供了默认 User 作为抽象模型的完整实现。
在你的 app_name.models.py 中创建这样的用户类。
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
is_verified = models.BooleanField(default=False)
在你的设置 ps.py
AUTH_USER_MODEL = 'app_name.User'
注意app_name是如何使用的。
现在,您也可以添加任意数量的属性。
默认情况下 is_verified 设置为 False,一旦管理员批准(验证)用户将其更改为 True。
希望这可以帮助。
推荐阅读
- android - Android Studio 新项目构建失败
- branch.io - 使用 Branch SDK 的 Android 深度链接
- node.js - 安装包时,角度中的 package.json 未更新
- python-3.x - Tensorboard 投影仪可视化 - PCA 不断加载
- javascript - 我有这样的 JSON 字符串化数据:
- android - 如何将图像移动到线性布局的底部
- go - 更好地理解 Kademlia 的 XOR 整数度量
- python - 插入均值后 numpy 数组形状发生变化
- oracle - 在 oracle Apex 中将金额格式设置为 $xxx,xx
- php - 如何在 PHP 中使用八进制、十六进制和 unicode 代码点表示法打印一个字母?