1 web框架本质
浏览器(socket客户端)
- 2 发送请求(ip和端口,url http://www.baidu.com:80/index/)
- GET
请求头(数据请求行的url上: Http1.1 /index?nid=2&name=alex)
请求体(空)
- POST
请求头
http1.1 /index?p=123 或者 http 1.1 /index/
请求体
包含数据
4 接收响应
- 普通响应
--页面直接显示
-- 双方closed
- 重定向响应
-- 再发起一次http请求
服务器(socket服务端)
1 启动服务器,并监听ip和端口,等待用户连接
3 接收请求,处理并返回
- 普通返回(字符串) # render, HttpResponse
-- 响应头
-- 响应体
- 重定向返回(只有响应头,响应体为空)
-- 响应头
LOCATION: "http://www.baidu.com"
2 django web框架
1 创建Project
admin-django startproject mysite
2 配置settings.py
- 模板路径TEMPLATES DIRS
- 静态文件路径 STATIC_URL, STATICFILES_DIRS
- 额外配置:
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',
]
4 路由关系
url -> 函数
5 视图函数
def login(request):
request.method
request.POST(获取请求体数据)
request.GET (获取请求头url的数据)
return HttpResponse("字符串")
return render(request, "login.html", {})
1 获取模板 + 数据 进行渲染(成字符串)
2 HttpResponse(字符串)
return redirect("要跳转的网址")
5 模板渲染
{{ msg_str }}
{{ msg_list.0 }}
{{ msg_dict.key }}
{% for item in msg_list %}
{% endfor%}
{% if 1>2 %}
{% endif %}
3 ajax(特殊的向后台发数据方式) --单独前端技术
- 引入jquery
- $.ajax({
url: '提交的地址',
type: 'post', // 提交的方法
data: {'k1':'v1, 'k2':'v2'},
success: function(data){
// 当服务器处理完成后,回调函数
}
})
- ajax 和 form区别
-- form表单提交,页面会刷新(不能满足需求:数据错误,不能保留对话框)
-- ajax提交页面不刷新,实现上面需求
-- ajax存在缺点:数据对的时候,服务器不能实现跳转,只能用前端实现跳转
location.href = "/classes/"
4 提交数据
模态对话框(ajax)(登录框)
- 少量输入框
- 数据少
新url方式(京东登录框,要打广告)
- 操作多
- 大量的数据