自我总结43
静态文件配置
你在浏览器中输入网址能够有响应的资源返回给你
是因为后端已经提前给你开设该资源的接口,也就意味着你所能访问到的资源 都是人家事先定义好的
django如何给用户开设资源接口呢?
在urls.py中 开设路由与视图函数对应关系
默认情况下所有的html文件都是放在templates文件夹内
什么是静态文件
网站锁使用到的提前写的css js 第三方的前端模块 图片 都叫做静态资源
默认情况下网站所用到的静态文件资源全部会放在static文件夹下
通常情况下 static文件夹内部还会在建其他文件夹
css 文件夹
js 文件夹
font 文件夹
img 文件夹
bootstrap
第三方模块
为了更加方便管理文件
如何暴露静态文件资源给用户访问
django
为了你暴露方便已经将urls.py
自动配置好了只需要在settings.py
配置即可
STATIC_URL = '/static/' # 访问静态文件资源接口前缀
STATICFILES_DIR = [
os.path.join(BASE_DIR,'static')
] # 自己手动配置路径
"""
如果你想访问静态文件资源 你必有以上面的名字开头
你才有访问静态文件资源的权限
一旦你是以接口前缀开头 我会拿着接口前缀后面的文件路径
去下面的列表中从上往下去每一个文件夹 找寻是否存在该文件 如果是直接返回 """
静态文件动态绑定
html页面上的接口前缀跟你的配置文件中接口前缀动态绑定
{% load static %} # 配置文件中接口前缀
<script src='{% static 'Bootstrap/css/min.css' %}'></script> # html页面上的接口前缀
request方法初识
该对象内部包含了所有请求相关的数据
request.method
获取请求方式 并且纯大写的字符串 GET
POST
携带数据的的方式
GET请求携带数据的方式
request.POST
获取post请求携带过来的数据 看成一个大字典
request.POST.get() # 默认只拿value列表中最后一个元素request.POST.getlist() # 拿value整个列表
GET请求携带数据的方式
request.GET
获取get请求携带过来的数据 看成一个大字典
request.GET.get() # 默认只拿value列表中最后一个元素request.GET.getlist() # 拿value整个列表
# 只要你的ulr后面符号get请求携带参数的特点 那么无论你发什么请求 你都可以通过request.GET获取数据
request.FILES
获取form表单上传的文件数据
file_obj = request.FILES.get('myfile')
file_obj.name 文件名
f = open(file.obj.name,'wb')
for chunk in file_obj.chunks(): # for line in file_obj:
f.write(chunk)
f.close()
pycharm连接数据库
左下方
或者右侧边缘都有连接入口
你只需要注意在第一次连接数据库的时候 需要下载一个数据库的驱动
django链接MySQL
django默认自带一个小型的sqlite(对日期格式的数据 不太兼容)
一定要注意是两步
# 1.在settings文件中配置
DATABASES = {
"NAME":...
"HOST":...
"PORT":...
"USER":...
"PASSWORD":...
"CHARSET":'utf8'
}
# 2.需要在项目名下面的__init__.py或者app下面的__init__.py文件中配置一下
# 告诉django不要使用默认的mysqldb模块连接数据库 而是使用pymysql
import pymysql
pymysql.install_as_MySQLdb()
django orm简介
对象关系映射
为什么使用orm
能够让不会数据库操作的人也能够简单方便去操作数据库
orm的缺点
封装程度太高 有时候会出现查询效率偏低的问题
所以工作中
简单的用orm
复杂的 追速度 需要你手动书写sql语句
# django的orm不会自动帮你创建数据库 需要你手动自己创建数据库
# orm只能帮你自动创建表
注意
:之后在写django项目的时候 一个django就对应一个数据库,不要出现多个项目使用同一个数据的情况
建议
:针对不同的django项目 使用不同的库 不要多个项目公用一个数据库
django中如何操作 orm
书写模型类
去应用下的models.py中书写模型类
表字段的书写
class User(models.Model):
# django orm当你没有指定主键的时候 orm会自动帮你新建一个字段名为id的主键字段
# 但是如果你的主键字段不想叫id 那么你只能手动设置 一旦orm识别到你手动设置了主键 它就不再自动创建
# id = models.AUTOField(primary_key = True)
username = models.CharField(max_length=32) # CharField字段一定要指定max_length参数
password = models.IntegerField()
数据库迁移命令
将在models里面的操作同步到数据库中
python3 manage.py makemigrations
将数据库操作记录到小本本上 migrations文件夹内 日志功能 该命令不会直接影响数据库
python3 manage.py migrate
将记录真正的同步到数据库中
只要你动了跟数据库相关的models中的代码 你就必须执行上面的命令一个都不能少 顺序也不能颠倒
字段增删改查
字段的修改
直接修改代码 然后执行数据库迁移命令即可(两条一条不能少)
1.设置默认值
2.允许为空
# 方式1 设置默认值
email = models.EmailField(default='123@qq.com') # varchar
# 方式2 允许字段为空
phone = models.BigIntegerField(null=True)
# 直接在提示中给默认值
gender = models.CharField(max_length=32)
字段的删除
直接注释掉对应的字段 然后再执行数据库迁移命令即可(谨慎使用)
数据的增删改查
查
models.User.objects.all() # 查询所有
# 结果是一个"列表" 里面是一个个的数据对象
models.User.objects.filter(**kwargs)
# filter的结果你可以看成是一个列表 支持索引取值和切片操作 但是不支持负数
# filter返回的结果是一个"列表",里面才是真正数据对象
# filer括号内可以放多个关键字参数 这多个关键字参数在查询的时候 条件之间是and关系
增
models.User.objects.create(**kwargs)# 该方法有一个返回值 就是当前被创建的对象本身
改
models.User.obejcts.filter(id=1).update(**kwargs)# 批量更新
删
models.User.obejcts.filter(id=1).delete()# 批量删除