Django AUTHENTICATION AND AUTHORIZATION组和权限希望创建经过验证的用户

时间:2018-06-27 12:25:53

标签: django django-models django-forms django-templates django-admin-tools

嗨,Djangonauts,                   我是Django新手,请原谅逻辑或代码中的任何愚蠢错误。

简介: 我正在构建一个Web应用程序,成员可以在其中编写有关某个主题的帖子并提供有关该主题的课程。示例成员可以撰写有关骑自行车带轮自行车的博客,并提供有关课程的信息。

我想要的东西: 我希望要提供课程的成员得到验证。示例:成员必须使用其详细信息填写表格,例如... 姓名,地址和带照片的身份证件。另外,您需要支付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的管理员身份验证和授权中添加一个组

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))

1 个答案:

答案 0 :(得分:1)

一种解决方法是在用户中添加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)

在您的settingps.py中

AUTH_USER_MODEL = 'app_name.User'

注意如何使用 app_name

现在,您可以根据需要添加任意多个属性。

通过默认is_verified设置为False,一旦管理员批准(验证),用户便将其更改为True。

希望这会有所帮助。