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的更多相关文章

  1. Python之路-(js正则表达式、前端页面的模板套用、Django基础)

    js正则表达式 前端页面的模板套用 Django基础 js正则表达式: 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  2. Django 基础教程

    Django 基础教程 这是第一篇 Django 简介 »  Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站! 你一定可以学会,Django 很简单 ...

  3. python的django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  4. Python学习(二十六)—— Django基础一

    转载自:http://www.cnblogs.com/liwenzhou/p/8258992.html 一.Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的 ...

  5. Django基础(一)

    Django基础(一) 知识预览 Django基本命令 二 路由配置系统(URLconf) 三 编写视图 四 Template 五 数据库与ORM admin的配置 一 什么是web框架? 框架,即f ...

  6. python3之Django基础篇

    一.Django基础 Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站! Django的特点: 强大的数据库功能:拥有强大的数据库操作接口(QueryS ...

  7. DJango 基础 (1)

    django基础 知识点: 基本认知 工具准备 新建项目 目录及文件说明 开发服务器 创建视图函数 新建应用(app) 1.基本认知 Django是用Python开发的一个免费开源的Web框架,可以用 ...

  8. Django基础和基本使用

    Django基础 Django是Python下的一款著名的Web框架 框架 任何语言进入到高级部分时,会有认证.session.http.连接数据库等等功能操作,没有框架时需要自己实现 框架 是整个或 ...

  9. {Django基础十之Form和ModelForm组件}一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 ModelForm

    Django基础十之Form和ModelForm组件 本节目录 一 Form介绍 二 Form常用字段和插件 三 From所有内置字段 四 字段校验 五 Hook钩子方法 六 进阶补充 七 Model ...

  10. {Django基础九之中间件} 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证

    Django基础九之中间件 本节目录 一 前戏 二 中间件介绍 三 自定义中间件 四 中间件的执行流程 五 中间件版登陆认证 六 xxx 七 xxx 八 xxx 一 前戏 我们在前面的课程中已经学会了 ...

随机推荐

  1. HTTP协议,到底是什么鬼?

    作者 | Jeskson 来源 | 达达前端小酒馆 了解HTTP HTTP是什么呢?它是超文本传输协议,HTTP是缩写,它的全英文名是HyperText Transfer Protocol. 那么什么 ...

  2. Firefox / Chrome 开发者工具 使用技巧

    附上资料 https://developers.google.cn/web/tools/chrome-devtools/          谷歌官方开发者工具文档 https://developer. ...

  3. Linux 使用squid3搭建代理服务器

    在对接微信/支付宝等3方业务时,往往都有ip白名单的设置,由于内网往往都是动态ip,频繁配置白名单是件及其繁琐的事情. 使用代理转发就是最方便的做法. 下面就使用squid3配置一台代理服务器. sq ...

  4. vue 学习注意事项

    一:插值方式: 1:数据绑定,最常见的形式就是使用 “Mustache” 语法(双大括号)的文本插值 <span>Message: {{ msg }}</span>  通过使用 ...

  5. Sql server锁

    SQL Server锁粒度 1.锁粒度是被封锁目标的大小,封锁粒度小则并发性高,但开销大,封锁粒度大则并发性低但开销小 2.SQL Server支持的锁粒度可以分为为行.页.键.键范围.索引.表或数据 ...

  6. 【转】PyQt弹出式对话框的常用方法及标准按钮类型

    pyQt之弹出式对话框(QMessageBox)的常用方法及标准按钮类型 一.控件说明 QMessageBox是一种通用的弹出式对话框,用于显示消息,允许用户通过单击不同的标准按钮对消息进行反馈,且每 ...

  7. 云服务器、VPS、虚拟主机三者之间的区别?

    更多精彩内容欢迎访问我的个人博客皮皮家园:https://www.zh66.club期待您的光临哦!我是皮皮猪,感谢各位光临,能为您排忧解难小站深感荣幸!祝您生活愉快! 什么是虚拟主机? 同云主机不一 ...

  8. 【杂文】NOIP2018 蒟蒻自闭记

    [杂文]NOIP2018 蒟蒻自闭记 都 \(9102\) 年了,谁还记得 \(2018\) 年的事啊 \(QAQ\) . 还有两个月就要去参加首届 \(CSP\) 了. 想着如果再不记下去年那些事儿 ...

  9. MAC安装Node.js

    官网下载Node.js Node.js v10.16.3 to /usr/local/bin/node • npm v6.9.0 to /usr/local/bin/npm Make sure tha ...

  10. Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer。。。。。检查一下servlet-api是否冲突了?

    原因:jar包发生冲突.在我的pom.xml文件中 <dependency>      <groupId>javax.servlet</groupId>       ...