[oldboy-django][1初始django]web框架本质 + django框架 + ajax
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方式(京东登录框,要打广告) - 操作多 - 大量的数据