Django静态文件配置
服务端需要生成HTML文件,需要一些额外的CSS,JS代码文件以及img图片等,还有一些脚本帮助我们渲染网页页面,在Django中我们可以把这些文件统称为静态文件。
我们需要把这些文件统一收集起来 方便管理。
在根目录下面创建 static目录,把所有的静态文件统一放入该目录中。
如果 static目录中文件过多 也可以再次划分 通过文件格式
css目录/js目录/img目录/libs目录(其他脚本插件等)
解耦合更加方便管理
默认文件资源是无法直接访问的 需要我们开发静态文件资源访问接口
静态文件相关配置
创建完static目录后 需要在settings配置文件中设置
STATIC_URL = '/static/'
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ]
# 即静态文件存放在 BASE_DIR/static 下(和manage.py同级目录下)
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static001') ]
'''
接口前缀正确之后 会拿着后面的路径依次去到列表中自上而下查找 一旦找到就返回
'''
接口前缀
STATIC_URL = '/static/'
# STATIC_URL的作用是用于拼接静态文件的存储路径。访问静态文件资源的接口前缀 通行证.这个可以自定义 不一定要命名'/static/'
动态解析接口前缀
<link rel="stylesheet" href="../static/bootstrap-3.4.1-dist/css/bootstrap.min.css">
静态获取接口前缀
动态获取接口前缀
关键词 {% load static %}
{% load static %}
<link rel="stylesheet" href="{% static "/bootstrap-3.4.1-dist/css/bootstrap.min.css" %}">
<script src ="{%static'bootstrap3.4.1dist/js/bootstrap.min.js' %}"></script>
先引入设置 {% load static %}
然后连接的时候接口前缀直接填写 {% static /文件地址 %}
form表单
From表单默认是get请求方式,提交数据需要改为post请求
from表单 action参数
<from action=' '></from>
// action参数不设置 默认提交给当前页面所在的地址
<from action='https://www.baidu.com'></from>
// 填写完整地址提交 绝对路径
<from action='/login/'></from>
// 只写后缀,提交到当前项目的页面地址 相对路径
from表单 method参数
<from action=''></from>
// method参数不设置 默认是get请求方式
<from action='' method = 'post'></from>
// 改为 post请求方式
请求方法补充:
get
朝服务器索要数据 也可以携带一些额外的要求
携带额外数据的方式 URL?name=123&uuu=xxx
额外携带的数据不能太大 最好小于2kb
post:
朝服务器提交数据
携带额外数据的方式:请求体
请求体携带数据安全性较高 且没有大小限制
request对象方法初始
获取用户提交数据
request.method
# 返回请求方式 并且是全大写 GET 或者 POST
request.POST
#获取post请求体里面携带的所有数据
#{name:['moon'],password:['212333'],hobby:['111','222','333']}
request.POST.get('name')
//获取到请求体里面的数据 默认获取数据列表中最后一个元素
//moon
request.POST.getlist('hobby')
//获取请求体里面的数据 获取数据列表
//['111','222','333']
def login(request):
if request.method == 'POST':
return HttpResponse('收到')
return render(request,'login.html')
# 通过这个方法可以区分是 get请求 还是post请求
def login(request):
if request.method == 'POST':
#先判断请求方式
if request.POST.get('username') == '123':
#在接收请求体数据 获取具体数据潘丹
return HttpResponse('登录成功')
return HttpResponse('收到')
render(request,'login.html')
获取用户提交的get请求数据
request.GET
#获取get请求体里面携带的所有数据
#{addr:['shanghai']}
request.GET.get()
//获取到请求体里面的数据 默认获取数据列表中最后一个元素
//shanghai
request.GET.getlist()
//获取请求体里面的数据 获取数据列表
//['shanghai']
Django链接mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 在settngs文件中 默认链接的是 'db.sqlite3'数据库 但是我们不需要
django链接mysql
第一步: 更改默认配置 链接mysql
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db1',
# 链接的库名
'USER':'moongod',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':3306,
'CHARSET':'utf8'
}
}
第二步:django默认用的是 mysqldb模块链接,导致报错
更改默认链接模块 为 pymysql
在同项目中的__init__py文件中插入代码
import pymysql
pymysql.install_as_MySQLdb()
# 将pymysql代替mysqldb
补充:mac苹果笔记本如果出现 str编码错误 去报错行把 decode 改为 encode即可
Django操控mysql
Django ORM
'''
什么是orm,可以让不会sql语句的人也可以直接用面向对象的代码 简单快捷的操作
数据库
缺点:封装程度太高,执行速度没有sql语句快
创建类 = 创建表
类产生对象 = 表添加记录
对象属性 = 记录里的字段对应的值
'''
应用在models.py文件下 在这个文件中编写关于数据库的代码
class l1(models.Model):
# 创建一张表 名为 l1
lid = models.AutoField(primary_key=True)
# 设置 字段 lid 类型为 自增 和 主键
name = models.CharField(max_length=18)
# 设置 字段 name 类型为 char(18)
password = models.IntegerField()
# 设置 字段 password 类型 为 int
这样就创建了一张表
!!!!!!! 然后必须要进行数据库迁移命令才可以生效!!!!!
在pycharm Terminal 命令行输入
python3.8 manage.py makemigrations
# 将操作记录记录在(migrate)文件夹内
python3.8 manage.py migrate
# 将操作通过到数据库中
这样就通过django 创建好了一张表
只要改了models.py 里面数据库的任何数据 都需要在执行一次
python3.8 manage.py makemigrations
python3.8 manage.py migrate
才可以生效
makemigrations
在django创建表时 如果不设置主键字段
ORM会默认生成一个字典id 作为主键并具有自增功能
django操控mysql增删改查
表字段的增删改查
表字段的增
表中增加字段:
直接在models.py文件中直接在生成表的类里添加字段
然后在执行 提交数据
python3.8 manage.py makemigrations
和确认数据迁移
Python3.8 manage.py migrate
表中已有数据后 在设置的新字段
新增字段 可以为空 或 给新增字段 设置默认值
这样才可以新增
表字段的改
表中改字段的类型 名字等:
直接在models.py文件中直接在生成表的类里更改字段
然后在执行 提交数据
python3.8 manage.py makemigrations
和确认数据迁移
python3.8 manage.py migrate
表字段的删
表中删字段:
直接在models.py文件中直接在生成表的类里删除对应字段
然后在执行 提交数据
python3.8 manage.py makemigrations
和确认数据迁移
python3.8 manage.py migrate
风险:确认迁移后对应字段的数据也就全部没有了
每次执行迁移命令前都要检查自己的代码
数据的增删改查
数据的查
username = request.POST.get('username')、
# 通过接收post请求,获取前端传的值
password = request.POST.get('password')
# 通过接收post请求,获取前端传的值
from app01 import models
# 把这个功能的models文件导过来
res = models.l1.objects.filter(name=username)
# 使用models文件查询对应表类 filter过滤条件为 字段name的值 = 前端输入的值
# 等同于sql语句:select * from l1 where name = 'moon'
拿到res res = <QuerySet [<User object>]>
# 大概是一个列表 里面里面有一个对象,或者多个
user_obj = res[0]
# 通过索引去值 把数据对象拿出来
# 不支持负数索引
方式二:
user_obj = models.表名.object.filter(username = username).first()
# 直接拿到数据对象
user_obj.name
user_obj.password
这样就可以直接通过点的方式拿到表格内的数据
数据的增
username = request.POST.get('username')、
# 通过接收post请求,获取前端传的值
password = request.POST.get('password')
# 通过接收post请求,获取前端传的值
from app01 import models
# 把这个功能的models文件导过来
方式一:
res = models.l1.objects.create(username=username,password=password)
models.l1.objects.create
# 新增数据语法
# 针对表l1 新增对象 (字段名=字段值)
方式二:
user_obj = models.l1(username=username,password=password)
# 针对l1表的类 生成一个新的对象
user_obj.save()
# 保存对象 = 相当于给表里添加数据
标签:请求,models,改查,py,request,Django,static,增删,数据
From: https://www.cnblogs.com/moongodnnn/p/16971929.html