Django请求&响应
1. Django三板斧
1. "HttpResponse"
# 返回值是字符串类型
2. "render"
3. "redirect"
重定向
"urls.py--"
from app01 import views
urlpatterns = [
path(r'^admin/',admin.site.urls),
path(r'index', views.index),
]
# django自动重启的现象,叫做热更新
"views.py"
from django.shortcuts import render, HttpResponse, redirect
def index(request):
print(123)
ctime = datetime.datetime.strftime("%Y-%m-%d %X")
a = 1
b = 2
# 暂且记忆,返回值是字符串类型
return HttpResponse("ok")
return render(request, 'index.html',{"ctime":ctime},locals())
# locals() 获取局部名称空间内的全部变量
return redirect('/admin/') # 自动补充上ip+port/admin
index.html
<h1>hello render</h1>
<h2>当前时间:{{ ctime }}</h2>
2. 静态文件配置
# 什么是静态文件
css,js,jq,bootstrap,img...
# 以登录功能为例
"静态文件的存储路径一般是static,默认是没有这个文件夹的,所以我们手动创建"
# 根目录下创建static文件夹
# 静态文件不能访问,是因为后端没有开发访问的路径
去 settings.py配置
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
"urls.py"
path(r'^login', views.login)
views.py
def login(request):
return render(request, "login.html")
3. request 请求
form表单
<form action="" method="">
1. action参数不写,提交到当前页面
2. 全写:指定具体地址
https://passport.baidu.com/v2/api/?login
3. 只写后缀
/login/ => 自动补全ip和端口
http://127.0.0.1:8000/login/
</form>
"面试题:get和post的区别"
http四大特征
基于请求响应
在应用层
TCP,UDP在传输层
IP协议在网络层
传输层和应用层之间抽象出socket层
"get和post请求"
1. get 没有请求体
2. get请求对数据大小由限制 4kb
3. 不安全
1. post才有请求体
2. post对数据大小没有限制,可以无限传
3. 安全
# 如何判断请求方式???
request.method
if request.method == "POST":
# 如何获取post请求方式的数据??
print(request.POST) # 跨站请求验证失败
print(request.POST.get('user'))
# get只能拿到最后一个值
print(request.POST.getlist('hobby'))
# 拿到整个列表所有值
if request.method == "GET":
request.GET
request.GET.get()
"""
MySQL中可能会出现的安全问题:SQL注入
前端中可能会出现的安全问题: xss攻击
django中可能会出现的安全问题:xsrf请求
"""
4. pycharm连接MySQL
5. django连接MySQL
# django默认的操作MySQL的模块是MySQLdb
"在python3.6以下,需要加入下面两句话"
from pymysql import install_as_MySQLdb
install_as_MySQLdb()
# 让pymysql以 MySQLdb的运行默认和django的ORM对接运行
"mysqlclient" -- 缺点就是一般情况下安装不上