- 安装Django
pip install django
- 创建Django项目
django-admin startproject mysite
注意:pycharm也可以创建Django项目
如果用pycharm创建,记得settings.py中的DIR里的信息删除
- 创建APP
python manage.py startapp app01 python manage.py startapp app02 python manage.py startapp app03
- 注册APP
INSTALLED_APPS = [ ... 'app01', ]
注意:一定要注册APP,否则APP下的models.py写类时,无法在数据库中创建表。
- 配置静态文件路径&模板的路径(放在APP目录下)
- 配置数据库相关操作(MySQL)
第三方模块(django3版本)
pip install mysqlclient
自己先去MySQL创建一个数据库
配置数据库连接(settings.py)
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'myproject', 'USER': 'name', 'PASSWORD': 'xxxxxxxxx', 'HOST': '', #127.0.0.1(本机) 'PORT': 端口号, } }
在APP下的models.py中编写表结构
from django.db import models # Create your models here. #设计表结构 class Admin(models.Model): """管理员表""" username = models.CharField(verbose_name="用户名", max_length=32) password = models.CharField(verbose_name="密码", max_length=64) def __str__(self): return self.username class Department(models.Model): """ 部门表(django会自动生成id,并且为主键,自增) verbose_name="标题"是用来记录的,一眼能看出这行代表什么,可不写 """ title = models.CharField(verbose_name="标题", max_length=32) def __str__(self): return self.title class UserInfo(models.Model): """ 员工表 acount = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0) max_digits=10数字总长度为10位 decimal_places=2小数占两位 default=0新建账户默认为0 """ name = models.CharField(verbose_name="姓名", max_length=16) password = models.CharField(verbose_name="密码", max_length=64) age = models.IntegerField(verbose_name="年龄") acount = models.DecimalField(verbose_name="账户余额", max_digits=10, decimal_places=2, default=0) # DateTimeField年月日时分秒 # creata_time = models.DateTimeField(verbose_name="入职时间") # DateTimeField年月日时分秒,入职时间不需要时分秒,只要年月日用DateField creata_time = models.DateField(verbose_name="入职时间") #无约束 # depart_id = models.BigIntegerField(verbose_name="部门ID") # 有约束,depart = models.ForeignKey(to="Department", to_field="id") # to="Department"与哪张表关联 # to_field="id"与表中的哪一列关联 #用ForeignKey时,写的depart,但生成列为depart_id # depart = models.ForeignKey(to="Department", to_field="id") #第一种 部门表被删除(部门表使用了外键),级联删除on_delete = models.CASCADE depart = models.ForeignKey(verbose_name="部门", to="Department", to_field="id", on_delete=models.CASCADE) # 第二种:置空,让他变为空置 # null = True, blank = True设置这列允许为空 # depart = models.ForeignKey(to="Department", null=True, blank=True, on_delete=models.SET_NULL) #在django代码中做约束,gender性别约束后在数据库中只能选择1和2 gender_choices = ( (1, "男"), (2, "女"), ) gender = models.SmallIntegerField(verbose_name="性别", choices=gender_choices) class PrettyNum(models.Model): """靓号表""" # CharField必须设置长度 mobile = models.CharField(verbose_name="手机号", max_length=11) # null = True, blank = True允许为空 price = models.IntegerField(verbose_name="价格", default=0) level_choices = { (1, "1级"), (2, "2级"), (3, "3级"), (4, "4级"), } level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1) status_choices = { (1,"已占用"), (2,"未占用"), } status = models.SmallIntegerField(verbose_name="状态", choices=status_choices, default=2) class Task(models.Model): """任务""" level_choices = ( (1, "紧急"), (2, "重要"), (3, "临时"), ) level = models.SmallIntegerField(verbose_name="级别", choices=level_choices, default=1) title = models.CharField(verbose_name="标题", max_length=64) detail = models.TextField(verbose_name="详细信息") user = models.ForeignKey(verbose_name="负责人", to=Admin, on_delete=models.CASCADE)
生成表(执行两个命令)
python manage.py makemigrations python manage.py migrate
- 在urls.py中,路由(创建URL和视图函数的对应关系)
- 在views.py中,编写视图函数(编写业务逻辑的)
- 在templates目录中,编写HTML模板(含有模板语法,可以继承(公共的部分)、静态文件({% static 'xx' %}))
- ModelForm & Form组件,开发增删改查功能
- 生成HTML标签(生成默认值)
- 请求数据进行校验
- 保存到数据库(ModelForm)
- 获取错误信息
- Cookie和Session,将用户登录信息保存起来,下一次登录的时候直接读取就可以了。
- 中间件,基于中间件实现用户认证(统一做,不用一个个单独实现),基于process_request方法。
- ORM操作
models.User.objects.filter(id="xxx") models.User.objects.filter(id="xxx").order_by("-id")
- 分页组件
- Ajax请求
标签:verbose,回顾,--,py,Django,models,choices,id,name From: https://www.cnblogs.com/kekeeleven/p/17797501.html