WEB后端服务第11天
一、 Django入门
1.1 基本概念
1.2 创建环境与app项目
安装依赖包
pip install django==2.0.1 -i https://mirrors.aliyun.com/pypi/simple
【注意】如果Python版本(3.7.4+)很高时,SQLite3版本同样很高,则django版本建议使用django==2.1.5+;因为,admin.site 站点管理时,会报auth_user_old表不存在的错误。
进入"终端" CMD命令, 通过 django-admin 命令创建django项目。
django-admin startproject helloDjango
通过django-admin命令创建app应用
django-admin startapp mainapp
在一个Django项目中,存在很多的app应用(模块), 创建好的app需要注册到主工程中(settings.py)
1.3 django项目结构
项目结构如下:
helloDjango
|--- helloDjango 主工程目录
|---- settings.py # 设置文件, 数据库连接、app注册、中间件及模板配置
|---- urls.py # 总路由
|---- wsgi.py # Django实现wsgi的脚本
|---- __init__.py
|--- mainapp 应用模块(主)
|---- __init__.py
|---- admin.py # 后台管理配置脚本
|---- models.py # 数据模型类声明所在脚本
|---- views.py # 声明当前应用的视图处理函数或类
|---- urls.py # 自已增加的当前应用模块的子路由
|---- tests.py # 当前应用模块的单元测试类
|---- apps.py # 声明当前应用的基本信息
|--- manage.py WEB应用的启动脚本, 项目工程的入口
1.4 Django请求流程
1. 到urls分发器 (总urls.py -> 子路由)
2. urls分发器根据路由规则(正则)分发到views
3. views去调用Model,交互数据
4. views将数据渲染到模板中
5. 模板呈现给用户
二、 数据库连接与ORM模型
2.1 数据库连接配置
默认是sqlite3数据库, 在使用ORM模型之前,需要先生成迁移文件,再执行迁移命令,在数据库中生成这些模型对应的表。
- 先生成迁移文件
python manage.py makemigrations
- 开始迁移(生成表、 修改表、删除表)
python manage.py migrate
注意: 一旦生成了迁移文件并且迁移成功之后,不要删除迁移文件。
2.2 初步使用ORM模型
在app模块中的models.py 定义一个用户(客户)模型
from django.db import models
class UserEntity(models.Model):
# 默认情况下会自动创建id主键
name = models.CharField(max_length=20)
age = models.IntegerField(default=0)
phone = models.CharField(max_lengt=11)
class Meta:
# 指定当前模型类映射成哪一个表
db_table = 'app_user'
模型创建完成后,先后执行生成迁移文件和迁移。
2.3 CURD
查询
UserEntity.objects.all() # 查询所有, list
UserEngtity.objects.get(pk=id) # 根据主键值查询一个实体对象
增加
u = UserEntity()
u.name = 'disen'
u.age = 20
u.phone = '177'
# 保存模型对象
u.save()
删除
u = UserEntity.objects.get(1)
u.delete() # 删除
更新
u = UserEntity.objects.get(3)
u.name = '李成'
u.save()
三、Admin的site站点配置
四、 综合案例-水果管理
3.1 模型设计
# Fruit 水果模型类(name, price, source, cate_type_id)
# FruitImage 水果图片模型类(fruit_id, url, width, height, name)
# CateType 水果分类(name, order_num)
# Store 水果商店(name,name,boss_name, phone, address, city, lat, lon)
# StoreDetail 水果商店的详情
3.2 模板的基本使用
循环语句块
{% for item in items %}
{% endfor %}
分支循环
{% if 条件表达式 %}
{% endif %}
变量
{{ 变量名 }}
在views.py视图函数中,渲染模板
return render(request, 'fruit/list.html', locals() )
3.3 页面设计
{% block name %}
{% endblock %}
{% extends "base.html" %}