django 基础1
1.web应用
本质是基于socket实现的应用程序
浏览器---------服务器
2.http协议:应用层协议
1.基于TCP协议
2.基于请求响应
3.短连接
4.无状态
请求协议
浏览器---------->服务器 请求协议
服务器----------->浏览器 响应协议
3.请求协议
请求首行 get path?get数据 HTTP/1.1
请求头
userAgent :win Chorome/IPhone (在爬虫中标识来源)
contentType:json application/x-www-form-urlencoded(用来告诉服务器数据类型,不告诉默认url)
空行
请求体(post才有请求体) request.body获取数据 WSGR解析不了,返回的一串数据
a=1$b=2
{"a":1,"b":2}
如何给服务器发送json数据
给服务器发送请求方式
1.地址栏 get请求
2.form表单 get post请求(无法发送json数据) 因为没有方法告诉浏览器是json数据 contentType没有
3 a标签连接请求 get请求
4 Ajax请求 get(查) post(提交数据添加记录) put(更新) delete(删除) ......
$.ajax({
url:"/index/",
type:"post",
data:{
a:1,
b:2
}, # 默认urlencoded编码
success:function(res){
})
发送json数据
$.ajax({
url:"/index/",
type:"post",
contentType:"json"#告诉服务器,发送的是json数据,
data:JSON.stringfy({#将字典数据解析为json数据
a:1,
b:2
}),
success:function(res){
}
})
注意,Django解析不了json数据,只能自己利用request.body解析
响应协议
响应首行 HTTP/1.1 200 OK
响应头
contentType:"json"
...
空行
响应体
响应状态码:1开头 :请求中
200:请求成功 3开头:重定向 4:文件路径找不到 5:服务器错误
Django
MTV+url分发
反响解析:url(r'^role/add/$', views.role, name='role_add'),
url(r'^role/edit/(\d+)/$', views.role, name='role_edit'),
视图:
path=reverse("role_add") # "role/add/"
path=reverse("role_edit",args=(1,2)) # "role/edit/1/"
模板:
{% url 'role_add' %}
{% url 'role_edit' 2 %}
名称空间:用来做分发时,为了避免reverse的名称发生重复,来使用
re_path(r'^app01/', include(("app01.urls","app01"),namespace="app01",)),
视图函数:
request 对象:储存这次请求所有请求信息
属性:
HttpRequest.GET
HttpRequest.POST
---- urlencoded编码
---- 注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:
request.POST.getlist("hobby")
request.body(一个字串,代表请求头报文的主体)
request.method 请求方式
HttpRequest.META 请求头
HttpRequest.FILES
HttpRequest.COOKIES
HttpRequest.session session中间件 源码
HttpRequest.user 认证中间件 源码
方法: request.get_full_path (获取带上访问参数的请求?a=1&b=2)
rqquest.is_ajax(判断是否为ajax请求)
HttpResponse对象:
obj=HttpResponse("hello")
obj=render(request,"index.html")
obj=redircet("/index/")
FBV CBV *****源码流程
views:
from django.views import View
class BookView(View):
def get(self,request):
pass
def post(self,request):
pass
urls.py:
url("books",BookView.as_view())
模板层:
含有模板语法的html文件为模板文件 template 里面就是模板文件
render 方法渲染引擎
模板语法:
{{} }渲染变量 深度查询 句点符
过滤器 date,safe,add,slice
{% %}:渲染标签
{%for i in [111,222,333]%}
{%if i!= 222%}
<p>i</p>
{%endif%}
{%endfor%}
自定义标签和过滤器
1、在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.
2、 在app中创建templatetags模块(模块名只能是templatetags)
3、 创建任意 .py 文件,如:my_tags.py
from django import template
register = template.Library()
@register.filter
def filter_multi(v1,v2):
return v1 * v2
@register.simple_tag
def simple_tag_multi(v1,v2):
return v1 * v2
4、模板中使用:
{% load my_tags%}
num=12
{{num|filter_multi:2}}
{{ num|filter_multi:"[22,333,4444]" }}
继承 extend:
创建base.html:
构建钩子
{%block css%}
{%endblock css%}
{%block content%}
<p>123</p>
{%endblock%}
{%block js%}
{%endblock js%}
子模板继承:
{%extend "base.html"%}
{% block content%}
<p>111<p>
{%endblock%}
django 基础1的更多相关文章
- Python之路-(js正则表达式、前端页面的模板套用、Django基础)
js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...
- Django 基础教程
Django 基础教程 这是第一篇 Django 简介 » Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单 ...
- python的django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- Python学习(二十六)—— Django基础一
转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...
- Django基础(一)
Django基础(一) 知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即f ...
- python3之Django基础篇
一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...
- DJango 基础 (1)
django基础 知识点: 基本认知 工具准备 新建项目 目录及文件说明 开发服务器 创建视图函数 新建应用(app) 1.基本认知 Django是用Python开发的一个免费开源的Web框架,可以用 ...
- Django基础和基本使用
Django基础 Django是Python下的一款著名的Web框架 框架 任何语言进入到高级部分时,会有认证.session.http.连接数据库等等功能操作,没有框架时需要自己实现 框架 是整个或 ...
- {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm
Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...
- {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证
Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...
随机推荐
- Codeforces Round #507 (Div. 2, based on Olympiad of Metropolises) D mt19937
https://codeforces.com/contest/1040/problem/D 用法 mt19937 g(种子); //种子:time(0) mt19937_64 g(); //long ...
- 考试总结(橙题WA)
又逢校内测,成绩变化大 初见三道题,暗喜AK辣 谁知数据毒,特判不到家 三题两题WA,心态已爆炸 T1(我不想再见到这道题): 附上多年前AC但是随便出(毒瘤)一组数据就可以卡掉的代码: #inclu ...
- [ Python入门教程 ] Python的控制语句
Python控制语句由条件语句.循环语句构成.控制语句根据条件表达式控制程序的流转.本章将介绍Python中控制语句的基本语法. 条件判断语句 (1)if条件语句 if语句用于检测某个条件是否成立.如 ...
- Web协议详解与抓包实战:HTTP1协议-内容协商是怎样进行的(8)
一.内容协商的两种方式 每个 URI 指向的资源可以是任何事物,可以有多种不同的表述,例如一份文档可以有不同语言的翻译.不同的媒体格式.可以针对不同的浏览器提供不同的压缩编码等 二.Proactive ...
- [转]numpy中数据合并,stack ,concentrate,vstack,hstack
转自:https://www.cnblogs.com/onemorepoint/p/9541761.html 在python的numpy库中有一个函数np.stack() np.stack 首先sta ...
- STM32Cube在Main里判断USB是否已连接到电脑
首先添加这两个Includes: #include "usbd_def.h" #include "usbd_hid.h" 然后就可以在代码里用这个来判断是否有连 ...
- springboot kafka 消费者
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- Data Science: An overview
Week 1 Data Science: An overview Objective: 1.Is data science the same as statistics or analysis? st ...
- log4j2记录日志到数据库(完美支持mysql使用DruidDataSource)
引用 log4j-core-2.12.1.jar log4j-web-2.12.1.jar 1:配置数据源 2:调用类 3:写入
- Android开发中网络代理设置实用总结
一.背景 进行Android项目开发时,跟网络代理基本上天天都在打交道.通常情况下,至少有三个场景中经常用到网络代理: 1,经常通过Chrome访问Google等国外的技术网站,如通过SS工具等: 2 ...