静态文件
1.静态文件
不经常修改的文件,主要是针对html文件所使用到的各种资源
css文件 js文件 img文件 第三方框架文件
django针对静态文件资源一般需要单独开一个目录存放
static目录
该目录下如果各类型的文件都多,那么我们还可以继续创建目录,就以文件类型作为目录名称
2.资源访问
我们在地址栏中之所以可以输入路由获取对应的资源是因为我们程序员提前开设了资源接口
3.静态资源访问
默认情况下无法访问,因为我们没有提前开设静态文件资源的访问接口
静态文件相关配置
在配置文件中加上这个
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
1.接口前缀
STATIC_URL = '/static/' # 访问静态文件资源的接口前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
# 存储静态文件资源的目录名称,如果有多个静态文件资源目录直接在下面添加就行了
]
# 访问静态文件资源会先验证接口前缀,接口前缀正确后,会拿着后面的路径依次去列表中自上而下查找
2.接口前缀动态匹配
{% load static %} # django提供的语法
<link rel="stylesheet" href="{% static 'bootstrap-3.4.1-dist/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap-3.4.1-dist/js/bootstrap.min.js' %}"></script>
# 这样写完以后无论用户请求什么样的路由,它都可以动态的转为我们配置文件中填写的接口前缀
form表单
1.action # 控制数据提交的地址
1.action="" # 数据默认提交给当前页面所在的地址
2.action="https://www.baidu.com/" # 填写完整地址指定提交
3.action="/index/" # 向当前服务端的index地址提交
2.method # 控制数据提交的方法
默认是get # 向服务器要数据,也可以携带一些额外的要求
额外携带数据的方式: URL?aaa=bbb&ccc=ddd
问号后面携带的数据有大小限制(2KB),而且不能携带敏感数据
可以改为post # 向服务提交数据
携带额外数据的方式:请求体
请求体携带数据安全性较高而且没有大小限制
目前我们发送post请求需要注释掉配置文件中的某一行
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
request对象
1.获取请求方式
request.method # 获取请求方式,结果是纯大写的的字符串数据
GET/POST
2.获取请求方式中携带的数据
request.POST # 获取post请求的请求体中携带的数据,值为一个列表
request.POST.get() # 获取值列表中最后一个数据
request.POST.getlist() # 获取整个值列表数据
request.GET # 获取网址问号后面携带的数据,值也是一个列表
request.GET.get() # 获取值列表中最后一个数据
request.GET.getlist() # 获取整个值列表数据
'''
在视图函数中针对不同的请求的代码编写套路
if request.method == 'POST':
return HttpResponse()
return HttpResponse()
'''
pycharm连接数据库
pycharm中连接数据库在界面左侧的Database中点击加号,选择Data Source(鼠标不要点击,悬浮即可),在右侧弹出的界面中选择MYSQL然后连接即可
注意:pycharm初次连接数据库需要下载对应的驱动
django连接数据库
django会自带一个小型数据库sqlite3,它的功能较少,主要用于本地测试,实际项目中都会替换掉它
sqlite3默认配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
1.修改配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'day51',
'HOST': '127.0.0.1',
'PORT': 3306,
'USER': 'root',
'PASSWORD': '123',
'CHARSET': 'utf8'
}
}
2.需要指定模块
django1.X版本需要在项目目录下或者app目录下的__init__.py中编写代码
import pymysql
pumysql.install_as_MYSQLdb()
django2.X版本及以上都可以直接通过下载mysqlclient模块解决
ORM
简介
ORM:对象关系映射
能够让不会SQL语句的python程序员使用python面向对象的语法来操作数据库
映射关系
类 ==> 表
对象 ==> 一条条的数据
对象点名字 ==> 获取字段对应的值
# ORM由于高度封装了SQL,所以有时候效率较低,我们需要自己写SQL
基本操作
1.在models.py中编写模型类
class GirlsInfo(models.Model):
id = models.AutoField(primary_key=True) # id int primary key auto_increment
name = models.CharField(max_length=32) # name varchar(32)
age = models.IntegerField() # age int
2.执行数据库迁移相关命令
python38 manage.py makemigrations # 讲操作记录到小本本上(migrations目录下的一个文件)
python38 manage.py migrate # 讲操作同步到数据库上
# 每次在models.py中修改了与数据库相关的代码,都需要再次执行上述命令
基本语句
from app01 import models
models.类名.objects.create() # 创建数据
models.类名.objects.filter()
# 查询数据,结果为一个列表,里面是一个数据对象,需要通过点的方式获取数据
models.类名.objects.update() # 修改数据,可以和filter搭配使用,单独使用表示修改该字段的全部
models.类名.objects.delete() # 删除数据,需要和filter搭配使用,无法单独使用
标签:文件,models,middleware,配置,request,django,操作,数据
From: https://www.cnblogs.com/zyg111/p/16970052.html