目录
静态文件操作
静态文件资源及配置
1.分类:
1.1 html页面上使用的不经常改变的文件(templates文件夹):
CSS样式文件
JS页面动态操作文件
第三方框架文件
图片文件
2.存放:static文件夹
注:若static文件夹中的静态文件类型及文件数量过多 可以再进行优化 根据类型及页面不同操作再次进行归类
3.静态文件的访问:静态文件也有对应的路径 因此访问需要开设对应的接口才可以访问
注:和根据不同的数据对应不同的网址后缀类似 但由于静态文件过多及对应路径不一致
因此需要在配置文件中进行配置(不再对应关系中做对应)
3.1 配置文件settings中配置:
STATIC_URL = '/static/' # 接口前缀(接口以static开头才可以访问静态文件数据)
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')] # 将存放静态文件的文件夹路径添加到全局变量中 之后就可以访问静态文件下的所有文件数据
3.2 动态改变接口前缀
若接口前缀发生改变要一直在配置文件中去更改就很麻烦 因此可以动态修改接口前缀
{% load static %}
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-distt/css/bootstrap.min.css' %}">
form表单注意事项
1.请求类型:
1.1 GET请求:朝别人索要数据 也可以携带额外的数据
url?xxx=yyy&zzz=ooo&aaa=bbb
携带数据限制:数据只能是一些非敏感数据
数据大小范围2KB~4KB左右
GET请求没有请求体
1.2 POST请求:超别人提交数据 也可以携带额外数据
数据放在请求体中 数据大小没有限制
2.form表单数据提交方式
2.1 默认:GET请求
2.2 修改请求类型:
<form action="" method="post"> 在html的form表单中修改
action # 控制数据提交地址
不写:提交至当前页面
写后缀
写全称
2.3 提交post请求 配置文件中注释一行代码 # 不注释的话报错403(可能是权限不够 也可能是又错)
注释掉之后Django就会无法防止csrf的攻击
MIDDLEWARE = [# 'django.middleware.csrf.CsrfViewMiddleware',]
request对象方法
1.获取请求方式:request.method 结果是大写(GET POST)
2.获取POST请求发送数据:request.POST 普通数据(不包含文件)
3.获取POST请求数据列表中的最后一个数据:request.POST.get()
4.获取键对应的整个列表:request.POST.getlist() 不管数据多少
5.获取rul后面携带的非敏感数据:request.GET
6.获取GET请求数据列表中的最后一个数据:request.GET.get()
7.获取键值对的整个列表:request.GET.getlist()
pycharm连接MySQL
1.查询pycharm提供的database按钮:在pycharm页面左下角或者页面右上角
2.下载插件:file---settings---Plugins中搜索下载
3.首次连接数据库需要下载对应的驱动:
找到database按钮---加号---Data Source(选择数据库)---mysql---下载驱动
4.在pycharm中简单的操作数据的增删改查
django连接MySQL
1.配置文件中修改配置
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE': 'django.db.backends.mysql', # 指定的数据库名
'NAME': 'day56', # 指定的库名
'USER': 'root',
'PASSWORD': '1234',
'CHARSET': 'utf8',
'HOST': '127.0.0.1',
'PORT': 3306
}
}
 2.指定连接MySQL的模块
  2.1 django1.11版本需要在项目或者要你管呀目录下__init__.py中编写代码
import pymysql
pymysql.install_as_MySQLdb()
2.2 django2.2及以上版本下载mysqlclient
django ORM
ORM
1.ORM:对象关系映射
类----表
对象----记录
对象属性----字段对应的值
注:ORM的存在可以使不会MySQL的程序员也可以使用python语法操作MySQL
操作MySQL
1.ORM语法操作:models.py文件下编写
# create table info(id int primary key auto_increment,name varchar(32),age int)
class Info(models.Model): # 产生表
# 添加主键字段id id int primary key auto_increment
id = models.AutoField(primary_key=True)
name = models.CharField(32) # name字段 name varchar(32)
age = models.IntegerField() # age字段 age int
2.数据库迁移/同步命令
2.1 将models中有关数据的操作记录下来(magrations文件夹)
python manage.py makemigrations
2.2 将操作真正影响到数据中
python manage.py migrate
注:当修改了models中与数据库相关的代码 都必须执行上述命令
可以简写 也可以指定应用单独迁移/同步
3.主键:
表的主键在orm中 可以不写 orm会自动添加一个id的主键 如果名字叫别的 需要自己创建
操作数据的增删改查
1.查:models.Info.objects.filter() # 结果可以看成是一个列表套数据对象
获取对象:可以使用first()方法 如果没有值会返回None if判断 如果是多个对象 可以使用for循环
2.增:models.Info.objects.create()
3.改:models.Info.objects.filter(id=1).update(name='liliNB')
4.删:models.Info.objects.filter(id=4).delete()
操作外键创建
1.MySQL表与表之间的数据关系:
一对一 外键建在查询频率高的一方
一对多 外键建在多的一方
多对多 创建第三张表存放两表之间的关系
2.ORM表与表之间的数据关系
一对一 外键建在查询频率高的一方
一对多 外键建在多的一方
多对多 外键写在表的任意一方 ORM会自动创建第三张表