Django(2) 三板斧/http协议/静态文件
三板斧
(1) HttpResponse 返回字符串
def welcome(request):
return HttpResponse('注册成功')
(2) render 返回html页面,还可以往里面传值
def login(request):
return render(request, 'login.html')
(3)redict 跳转网页
http协议
一、四大特性
1、基于请求相应
2、基于TCP/UDP智商
3、无状态就是不保存用户的信息
4、无链接 请求一次回应一次
二、数据格式
请求首行
请求头(k:v健值对)
/r/n 空行
请求体(存放的是一些数据) -->并不是所有的请求方法都是有请求体的,get没有
响应数据格式是一样的
三、响应状态码
1xx 服务端已经接收到你的数据正在处理,你可以继续提交数据
2xx 服务端已经成功响应你的数据
3xx 重定向
4xx 找不到你需要的数据或者不符合获得数据的条件
5xx 服务端出现故障
静态文件
一、定义
写好之后不会自动动态改变的文件资源,比如css文件,js文件,图片或者第三方框架文件,默认会将所有的静态文件放在一个static文件夹内,我们会在Django目录下创建static文件夹,static文件夹下还会有css js img others,也可以根据项目的不同再继续建造
二、配置
🌹setting.py 静态文件配置
设置静态文件对应的url地址
STATIC_URL = '/static/' # 接口前缀
如果想访问静态文件资源,必须以static开头
如果书写了接口前缀之后,就拥有了访问下列列表中所有文件夹内部资源的权限
顺序就是列表的顺序,从上往下
静态文件存放的物理目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
os.path.join(BASE_DIR, 'static1'),
os.path.join(BASE_DIR, 'static2')
]
🌹动态解析
{%load static%} -->相当于导入一个模块
<link rel="stylesheet" href="{% static '这里写css文件' %}">
<script src="{% static '这里写js文件' %}"></script>
有了这三句话,那么不管接口变成什么,都可以动态解析了
request对象方法
Django每一个view函数的第一个参数都是request
def reg(request):
if request.method == 'POST': # request.method 获取当前的请求方法并且结果是一个纯大写的字符串类型
username = request.POST.get('username')
# request.POST的结果是QueryDict
# QueryDict.get() 获取列表最后一个元素
# QueryDict.getlist() 获取整个列表
# request.GET的结果是QueryDict
# QueryDict.get() 获取列表最后一个元素
# QueryDict.getlist() 获取整个列表
# request.FILES 获取用户上传的文件,结果也是querydict,但是如果想要获取文件的话,必须在前端页面添加一个参数:<form action="" method="post" enctype="multipart/form-data">
password = request.POST.get('password')
print(username)
print(password)
models.User.objects.create(name=username, age=password)
return render(request, 'reg.html')
视图函数书写格式
def login(login):
if request.method=='POST':
return HttpResponse('我很气愤')
return render(request,'login.html') --> 一开始过来肯定是get请求所以会先走这一条;