Django-补
Django 入门
1. 安装Django
1 | pip instal django |
2. 创建项目
终端
打开终端
进入某个目录创建项目
执行
1
django-admin startproject 项目名称
django项目中会有一些默认的文件和文件夹,稍后会对其解释
pycharm
特殊说明:
通过命令行创建项目是标准的
pycharm,在标准上加入了一点东西
创建了一个templates目录
添加了templates路径设置
删除[]中内容
默认项目文件:
1 | └─mysite |
3. APP
1 | - 项目 |
创建app:
1 | python manage.py startapp app名 |
app目录文件结构
1 | app01 |
启动和运行Django
快速上手
确保app已注册
编写URL和视图函数对应关系 导入views.py
启动django项目
命令行启动:
1
python manage.py runserver
pycharm启动
配置后直接运行即可
4. 模板和静态文件
写一个页面
1
2url -> 函数
函数
templates模板
1 | # 去app目录下的templates目录寻找userlist.html (根据app的注册顺序) |
静态文件
开发中一般将:
- 图片
- css
- js
都会当作静态文件处理
在app目录下创建static目录,将以上类型文件放入
1 | <img src="/static/xx.png" alt=""> |
static可创建以下目录结构,将文件分类放入
1 | static |
django已经提供了static文件夹的引入方式,建议使用以下方式引用
1 | {% load static %} |
模板语法
本质上:在html中写一些占位符,由数据对这些占位符进行替换
模板中python变量的引入
对于python 列表 字典等变量 直接引入可以将其完整显示出来 例如 [‘111’] {“name”: 111}
可迭代变量
通过索引引入部分值 变量.索引值
for循环遍历
字典建取值
字典遍历
条件语句
django数据显示大致原理
5. 请求和响应
获取用户请求
响应内容
重定向
1 | return redirect("http://baidu.com") # 跳转到其他u |
用户登录案例
1 | # urls.py |
1 | <form mtehod="POST" action="/login/"> |
django默认开启csrf token 验证中间件 确保数据安全
模板没有传值则为空
action中的地址与访问地址相同时,可以省略不写
6. 数据库操作
ORM(对象关系映射)
安装第三方模块
1 | pip install mysqlclient |
orm可以帮助我们做两件事:
- 创建、修改、删除数据库中的表(无需写sql语句)。 【无法创建数据库】
- 操作表中的数据。【不用谢sql语句】
手动创建数据库
启动mysql服务
修改root密码
更改鉴权方式
1
2
3us
update user set plugin='mysql_native_password' where user ='root';
flush privileges;更改密码
1
ALTER user 'root'@'localhost' IDENTIFIED BY 'root';--修改密码为root
开启远程链接
1
2
3update user set host='%' where user ='root';
grant all on *.* to 'root'@'%';
flush privileges;创建数据库
1
create database dbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
连接数据库
在settings.py文件中配置
1 | DATABASES = { |
操作表
在models.py中创建表
1 | ''' |
执行命令:
注:app一定要注册!!
1 | python manage.py makemigrations |
查看数据库
1 | use django; |
修改表:
在表中新增列时,由于存在列中可能已有数据,所以新增列必须要指定默认值或者允许为空,那么你会出现以下问题
选择1可为新增的表添加默认值
选择2可以采用以下方式添加默认值
1 | age = models.IntegerField(default=2) |
或者允许为空
1 | data = models.IntegerField(null=True, blank=True) |
再次执行迁移命令即可
操作表中的数据
新建数据 insert into app01_name(title)values(“ss”)
1 | 类名.objects.create(列="值", 列="值") |
删除数据
1 | # 删除id=3的数据 |
获取数据返回列表 [行, 行] QuerySet类型 每一行都是对象
1 | data = 类名.objects.all() |
修改数据
1 | # 修改所有密码为999 |
补:sql语句
删除表
1 | drop table 表名; |
保存emoji数据,转换编码
1 | ALTER TABLE 你的表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
1 | # settings.py |