注册表(models.py)
from django.contrib.auth.models import AbstractUser
# 用户表,继承AbstractUser
class UserInfo(AbstractUser):
phone = models.BigIntegerField(verbose_name='手机号', null=True, blank=True)
"""
null=True 数据库该字段可以为空
blank=True admin后台管理该字段可以为空
"""
# 头像
avatar = models.FileField(upload_to='avatar/', default='avatar/default.png', verbose_name='用户头像')
"""
给avatar字段传文件对象,该文件会自动存储到avatar文件下,avatar字段只保存文件路径
用户不传头像的话 ,都用默认头像avatar/default.png
用户传数据时,只传文件名就可以,它会自动在前面加avatar(eg:avatar/111.png)
重新覆盖修改的话,用update直接修改不会自动加avatar,用.save会自动加
"""
create_time = models.DateField(auto_now_add=True)
forms主键类的书写
from django import forms
from app01 import models
# 对forms表中输入框输入的内容的限制。
class MyRegForm(forms.Form):
username = forms.CharField(label='用户名', min_length=3, max_length=8,
error_messages={
'required': '用户名不能为空',
'min_length': '用户名最少三位',
'max_length': '用户名最大八位',
},
# 让标签有bootstrap样式
widget=forms.widgets.TextInput(attrs={'class': 'form-control'})
)
password = forms.CharField(label='密码', min_length=3, max_length=8,
error_messages={
'required': '密码不能为空',
'min_length': '密码最少三位',
'max_length': '密码最大八位',
},
# 让标签有bootstrap样式