50.Django框架
【一】Django之三板斧
1)render
-
作用:返回HTML文件,并且支持模板语法
-
语法:
render(request,'模板文件名',locals())
# App.views
from django.shortcuts import render
def all_web(request):
data = {'name': "ST1", 'age': 20}
return render(request, 'all_WEB.html', locals())
# 再在指定网页通过输入{{data}}实现渲染
2)HttpResponse
-
作用:
-
字符串形式的数据渲染到页面上还是字符串
-
字典格式的数据渲染到页面上只显示当前的第一个键
-
# App.views
from django.shortcuts import HttpResponse
def index_1(request):
data = 'hello world'
return HttpResponse(data)
def index_2(request):
data = {'name': "ST1", 'age': 20}
return HttpResponse(data)
# 再在Django.urls内正常创建连接地查看样式
3)redirect
-
作用:重定向路由请求地址
-
语法:
redirect(to="/模板文件名/") # 左/:代表的是从根目录开始找路由
def redirect_1(request):
return redirect(to="/all_WEB.html/")
4)django自带重启功能
- 当识别到项目中代码有变化之后 隔段时间会自动重启 但是有时候较慢
【二】Django之静态文件(static)
1)静态文件配置说明
1.静态文件
- 前端已经写好,能直接使用的文件
- 如:网站写好的文件(js,css等)
2.模板文件
- HTML文件默认都是放到templates文件下
3.资源文件
-
网站所用到的静态文件默认放到static文件下
- css:储存css样式
- js:储存js动作
- font:储存字体
- plugins:储存插件
-
若访问不到,则是后端没有开设相关的端口
2)静态文件配置
1.后端
# Django.setting
# 在STATIC_URL = 'static/'下插入
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
2.前端
{% load static %}
<img src="{% static 'my_app/example.jpg' %}" alt="My image">
【三】Django之request对象
1)提交get请求
1.前端
- action:传输地址,默认是当前路径地址
- method:请求方式,默认get请求
from表单 get请求
<from action="" method="get">
</from>
2.后端
# App.views
def register(request):
return render(request, "register.html")
# Django.urls正常添加地址
2)提交post请求
1.前端
- 同get
from表单 post请求
<from action="" method="post">
</from>
2.后端
- 同get
3.请求报错解决方法
- csrf 验证失败 ---> 注释掉一个中间件 ---> 取消了 csrf 验证
# Django.settings
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',
]
3)request对象属性和方法
1.获取当前请求的方式
print(request.method)
2.从get、post请求获取数据
print(request.GET)
print(request.POST)
3.获取指定数据
- get:获取单一键值时候的方式
- getlist: 获取一个键对应多个值时候的方式
username = request.GET.get('username')
password = request.POST.get('password')
course = request.POST.getlist('course')
print("GET:", username, "PASS:", password, "course:", course)
4)post请求获取打开数据
# App.views
def post(request):
print(request.method)
# 只有post请求才会走的方式
if request.method == "POST":
return HttpResponse("ok")
return render(request, "post.html")
# Django.urls正常添加地址