我只支持微信扫码登录、那么密码这个字段不需要
时间: 2023-08-01 14:05:59 浏览: 46
好的,如果你只支持微信扫码登录,那么密码这个字段可以不需要。可以将原来的password字段删除。同时,在save方法中,也不需要对密码进行加密。
以下是新的User模型的代码:
```python
from django.db import models
class User(models.Model):
name = models.CharField(max_length=50, verbose_name='姓名')
email = models.EmailField(unique=True, verbose_name='邮箱')
is_active = models.BooleanField(default=False, verbose_name='是否激活')
is_superuser = models.BooleanField(default=False, verbose_name='是否超级管理员')
avatar = models.ImageField(upload_to='avatars/', null=True, blank=True, verbose_name='头像')
wechat_id = models.CharField(max_length=50, null=True, blank=True, verbose_name='微信ID')
wechat_qrcode = models.ImageField(upload_to='qrcodes/', null=True, blank=True, verbose_name='微信二维码')
class Meta:
verbose_name = '用户'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
def save(self, *args, **kwargs):
if not self.pk:
# 新建用户时,发送激活邮件
self.send_activation_email()
# 调用父类的save方法保存用户信息
super().save(*args, **kwargs)
def send_activation_email(self):
# 发送激活邮件
subject = '请激活您的账号'
message = f'请点击链接激活账号:{settings.SITE_URL}{reverse("activate", args=[self.pk])}'
from_email = settings.DEFAULT_FROM_EMAIL
recipient_list = [self.email]
send_mail(subject, message, from_email, recipient_list)
```
在新的User模型中,我们删除了password字段,并删除了save方法中的密码加密代码。同时,在save方法中,如果是新建用户,则发送激活邮件。
这样,我们就设计出了一个支持微信扫码登录的用户表。需要注意的是,微信扫码登录需要调用微信开放平台的API,这部分的实现需要在视图中进行。