我是连人,本期我们讲实现用户的注册和登录功能。
你无论开发什么网站,用户的注册和登录是必备的功能(除非你打算开发一个静态网站)。
我们将用户定义为一个“类别”(class),在class里面我们定义一些关于你的网站的用户的基础属性(比如购物网站要有用户余额,餐厅的网站可能要记录这个客户来吃过几次饭)。
Django中自带用户类,但是我不推荐使用,因为无法定义我上述的你需要的特别的属性。
对于用户的注册和登录,是对数据库和网站开发相连接的基础。不止用户的数据要靠class实现,例如用户发的消息,餐厅网站中菜的信息,购物网站商品的信息,都是通过class定义记录进数据库的。
由于Django强大的功能(此处指ORM功能),操作数据库的时候,我们也不必学习复杂的SQL语句了。
话不多说,直接开冲。
models.py是我们定义class的地方
from django.db import models
class User(models.Model):
username = models.CharField(max_length=10, unique=True)
password = models.CharField(max_length=10)
def __str__(self):
return self.username
class Meta:
ordering = ['id']
# ordering = ['-id'] 这个是降序的写法
这是一个最简单的User类,我只使用了用户名和密码。后面的完整性约束条件大家都懂嘤语我就不解释了。
CharField是定义这个变量是什么类型的函数。models类下常用的field大概有如下:
Field | 类型 |
---|---|
AutoField | 自增,一般是models自动创建了id=AutoField(primary_key=True) |
BooleanField | 布尔型 |
CharField | 字符型 |
DateField | 日期型 |
DateTimeField | 日期+时间类型 |
FloatField | 浮点型 |
IntegarField | 整型 |
TextField | 长文本型 |
一般常用的就是这些,像什么FileField可以直接用CharField记录储存地点,URLField什么的也是直接用CharField记录就可以。
下面简单介绍Field中的字段
字段 | 赋值 | 作用 |
---|---|---|
null | True or False | 可否为null值 |
blank | True or False | 可否为空 |
choice | 你自己建立的字典 | 将变量限定在一个范围 |
default | 符合Field规则的值 | 设定默认值 |
editable | True or False | 是否在admin界面里显示 |
primary_key | True or False | 设定主键 |
unique | True or False | 设定是否可以重复 |
(null和blank那里我也没太搞清楚,我一般用null)
str那里可以在admin界面(这篇文章下面会介绍)显示你需要显示的字段
class Meta里的ordering指排序顺序,引号里的值是你希望的排序的依据。
在admin.py中输入如下:
from . import mode