Django:如何创建群组?

问题描述

示例详细说明我的问题->我是该网站的用户,我想创建一个。在创建群组时,网站向我询问 group_name,group_description,group_password(因为我不希望该群组公开,如果要加入该群组的人应该知道密码)。现在,我已将名称和密码提供给我的朋友,他们可以通过验证并使用该组的密码加入该组,从而成功加入

问题,我正面临->我在 models.py 中创建了密码字段。但是密码会以平面文本的形式保存在数据库中,但不会像散列的django密码那样保存。其次,我希望加入的用户使用密码进行身份验证才能加入群组。

models.py

class Group(models.Model):
admin = models.ForeignKey(to=Profile,related_name="admin",on_delete=models.CASCADE)
name = models.CharField(max_length=200,unique=True)
password = models.CharField(max_length=200,default='thinkgroupy')
slug = models.SlugField(allow_unicode=True,unique=True)
group_pic = models.ImageField(upload_to="users/group_images/%y/%m/%d",null=True)
about = models.CharField(max_length=255,null=True,blank=True)
about_html = models.TextField(editable=False,default='',blank=True)
created_at = models.DateTimeField(auto_Now=True)
members = models.ManyToManyField(User,through="GroupMember")

def __str__(self):
    return "%s" % self.name

def save(self,*args,**kwargs):
    self.slug = slugify(self.name)
    self.about_html = misaka.html(self.about)
    super().save(*args,**kwargs)

def get_absolute_url(self):
    return reverse("groups:single",kwargs={"slug": self.slug})

class Meta:
    ordering = ["name"]


class GroupMember(models.Model):
group = models.ForeignKey(Group,related_name="memberships")
user = models.ForeignKey(User,related_name='user_groups')

def __str__(self):
    return self.user.username

class Meta:
    unique_together = ("group","user")

views.py

 class CreateGroup(LoginrequiredMixin,generic.CreateView):
        fields = ("name","description","password")
        model = Group

class JoinGroup(LoginrequiredMixin,generic.RedirectView):
    def get_redirect_url(self,**kwargs):
        return reverse("groups:single",kwargs={"slug": self.kwargs.get("slug")})
    def get(self,request,**kwargs):
        group = get_object_or_404(Group,slug=self.kwargs.get("slug"))
        try:
            GroupMember.objects.create(user=self.request.user,group=group)
        except IntegrityError:
            messages.warning(self.request,("Warning,already a member of {}".format(group.name)))
        else:
            messages.success(self.request,"You are Now a member of the {} group.".format(group.name))
        return super().get(request,**kwargs)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)