day67

内容回顾

视图

1. CBV

定义

    from django.views import View

    class Addpub(View):

        def get(self,request):
self.request
return response def post(self,request):
return response 使用: from app01 import views url(r'^add_pub/',views.Addpub.as_view()) 2. as_view()的流程: 1. Addpub.as_view()执行 ——》 view函数
2. 请求到来的时候,执行view函数:
1. Addpub(*。**)——》 self
2. self.request = request
3. 执行self.dispatch(request.*args,**kwargs) ——》 Addpub中有 执行自己的dispatch,没有执行父类的
1. 判断请求方式 http_method_names = [ 'get','post' ]
1. 允许:
通过反射获取到对应请求方式(get/post)对应的方法 ——》 handler
2. 不允许:
http_method_not_allowed —— 》 handler
2. 执行handler ——》 返回response响应 3. 加装饰器的方式 from django.utils.decorators import method_decorator 1. 直接加在方法上 @method_decorator(timer)
def get(self, request): 1. 加在dispatch方法上 @method_decorator(timer)
def dispatch(self, request, *args, **kwargs):
# start = time.time()
ret = super().dispatch(request, *args, **kwargs)
# print('所用时间:{}'.format(time.time() - start)) return ret 1. 加在类上 @method_decorator(timer, 'post')
@method_decorator(timer, 'get')
class AddPublisher(View): 4. request 对象 1. request .method ——》 请求方式 POST GET
2. request .GET ——》 url上携带的参数
3. request .POST ——》 POST请求提交的数据
4. request .body ——》 请求体
5. request .FILES ——》 上传的文件
1. enctype = 'mutlipart/form-data'
2. POST {% csrf_token %}
3. 使用文件对象 chunks()
6. request.path_info ——》 url路径 不包含IP和端口、参数
7. request.COOKIES
8. request.session
9. request.get_full_path() ——》 url路径 不包含IP和端口 包含参数
10. request.get_host() ——》 主机的ip和端口
11. request.is_ajax() ——》 是否是ajax请求 5. response对象 1. HttpResponse() ——》 返回字符串 Content-Type = 'text/html'
2. render(request,'HTML文件名',{ }) ——》 返回完整的HTML页面
3. redirect(‘要跳转的地址’) ——》 重定向 Location :地址
1. ret = HttpResponse('') ret['Location '] = ' 地址'
4. JsonRespinse(字典) JsonRespinse([] ,safe=False ) Content-Type = 'application/json' 路由 from django.conf.urls import url
from django.contrib import admin
from app01 import views urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/$', views.blogs),
# url(r'^blog/([0-9]{4})/([0-9]{2})/$', views.blog),
url(r'^blog/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.blog),
] 正则 ^ $ asd \d + ? * . 分组和命名分组 url(r'^blog/([0-9]{4})/([0-9]{2})/$', views.blog), # 位置参数传参 url(r'^blog/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.blog), # 关键字传参 从URL上捕获的参数是字符串 include —— 路由分发 urlpatterns = [
url(r'^app01/', include('app01.urls')),
# url(r'^app02/', include('app02.urls')),
# url(r'^', include('app01.urls')),
] urlpatterns = [ url(r'^publisher/', views.publisher),
# url(r'^add_publisher/', views.add_publisher),
url(r'^add_publisher/', views.AddPublisher.as_view()),
# url(r'^add_publisher/', views.view),
url(r'^del_publisher/(\d+)/', views.del_publisher),
url(r'^edit_publisher/', views.edit_publisher), url(r'^test/', views.test), ] 今日内容 1. url命名和反向解析 from django.urls import NoReverseMatch, reverse 普通URL: 命名: url(r'^blog/$', views.blogs, name='xxxxx'), 反向解析 视图中: reverse('xxxxx') ——》 ‘/blog/’ 模板中: {% url 'xxxxx' %} 分组: 命名: url(r'^blog/([0-9]{4})/([0-9]{2})/$', views.blog, name='blog'), 反向解析 视图中: reverse('blog',args=('2019','01')) ——》 ‘/blog/2019/01/’ 模板中: {% url 'blog' '2018' '12' %} ——》 /blog/2018/12/ 分组: 命名分组: url(r'^blog/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.blog, name='blog'), 反向解析 视图中: reverse('blog',args=('2019','01')) ——》 ‘/blog/2019/01/’ reverse('blog',kwargs={'year':'2018','month':12}) ——》 ‘/blog/2018/12/’ 模板中: {% url 'blog' '2018' '12' %} ——》 /blog/2018/12/ {% url 'blog' year='2018' month='12' %} ——》 /blog/2018/12/ {% url 'blog' month='12' year='2018' %} ——》 /blog/2018/12/ 2. namespace url('app01/', include('app01.urls', namespace='app01')),
url('app02/', include('app02.urls', namespace='app02')) 视图: reverse('app01:home') 模板 {% url 'app01:home' %} ORM 类 ——》 表 对象 ——》 数据行 属性 ——》 字段 常用的字段 AutoField
IntegerField
BooleanField
CharField
DateTimeField
DateField
DecimalField
FloatField 字段和model的参数 见博客 必知必会13条 见代码 单表的双下划线 ret = models.Person.objects.filter(pk__gt=100) # greater than
ret = models.Person.objects.filter(pk__lt=103) # less than
ret = models.Person.objects.filter(pk__gte=100) # greater than equal
ret = models.Person.objects.filter(pk__lte=103) # less than equal ret = models.Person.objects.filter(pk__in=[100,103]) ret = models.Person.objects.filter(pk__gte=100,pk__lte=103)
ret = models.Person.objects.filter(pk__range=[100,103]) ret = models.Person.objects.filter(name__contains='L')
ret = models.Person.objects.filter(name__icontains='L') ret = models.Person.objects.filter(name__startswith='x')
ret = models.Person.objects.filter(name__istartswith='X') ret = models.Person.objects.filter(name__endswith='x')
ret = models.Person.objects.filter(name__iendswith='X') ret = models.Person.objects.filter(birth__contains='2019-01-24') ret = models.Person.objects.filter(age__isnull=False)

day64 Pyhton 框架Django 07的更多相关文章

  1. pyhton框架Django之cookie和session

    一,cookie和session的理解 cookies 是浏览器为 Web 服务器存储的一小段信息. 每次浏览器从某个服务器请求页面时,它向服务器回送之前收到的cookies.它保存在浏览器下的某个文 ...

  2. day63 Pyhton 框架Django 06

    内容回顾 1.装饰器 装饰器:是一个闭包函数,在不改变原函数的代码和调用方式的基础上,给原函数增加功能. def wrapper(func): def inner(*args,**kwargs): # ...

  3. day62 Pyhton 框架Django 05

    内容回顾 1.变量 render(request,'模板文件名',{ k1:v1 }) {{ k1 }} {{ list.0 }} {{ dict.key }} {{ dict.keys }} {{ ...

  4. day61 Pyhton 框架Django 04

    内容回顾 1.django处理请求的流程: 1. 在浏览器的地址栏输入地址,回车发get请求: 2. wsgi模块接收请求: 3. 在urls.py文件中匹配地址,找到对应的函数: 4. 执行函数,返 ...

  5. day60 Pyhton 框架Django 03

    day61 内容回顾 1.安装 1. 命令行: pip install django==1.11.18 pip install django==1.11.18 -i 源 2. pycharm sett ...

  6. day58 Pyhton 框架Django 01

    内容回顾 python基础    网路编程    并发编程    数据库    前端     osi7层           tcp/ip 5层模型    应用层    表示层             ...

  7. python运维开发(十七)----jQuery续(示例)web框架django

    内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...

  8. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  9. Python3.5学习十八 Python之Web框架 Django

    Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...

随机推荐

  1. leetcode刷题-67二进制求和

    题目 给你两个二进制字符串,返回它们的和(用二进制表示). 输入为 非空 字符串且只包含数字 1 和 0. 示例 1: 输入: a = "11", b = "1" ...

  2. mysql与redis区别

     编号   mysql redis 1 类型 关系型数据库 缓存数据库 2 作用 主要用于存放持久化数据,是将数据存储在硬盘中,读取时速度较慢,而且频繁访问也会导致数据库负载过高. 用于存储使用频繁的 ...

  3. TaskContinuationsOptions.ExecuteSynchronously探秘

    TPL - Task Parallel Library为我们提供了Task相关的api,供我们非常方便的编写并行代码,而不用自己操作底层的Thread类.使用Task的优势是显而易见的: 提供返回值 ...

  4. 初次使用maven创建web工程发现只有一个idea目录,src,webapp目录都不见了,解决方案

    修bug系列2之 初次使用maven创建web项目的src目录不知所踪 窗外下着下雨,屋内的我学着maven,本以为轻轻松松,没想到还是遇到了bug.好了不说了,来看看我是怎么解决的. 在初次使用ma ...

  5. jenkins打包java项目缺少jar包问题解决

    java项目在使用jenkins打包时个别jar包可能会没有下载到本地,这时候就要用命令行本地安装一下 打包时基础jar包报错如图: 黑框里依次为: 组ID:-DgroupId=com.azazar ...

  6. pytest测试框架 -- 简介

    一.pytest测试框架简介: (1)pytest是python的第三方测试框架,是基于unittest的扩展框架,比unittest更简洁,更高效. (2)pytest框架可以兼容unittest用 ...

  7. unittest上下关联关系的接口——继承测试用例类

    如果有上下关联,可以用到一个类继承测试用例类(里面的测试用例函数名不要带test)的方法去调用用例, 注意:如果放到同一个类会出现用例重复执行的情况 ,如果测试用例的函数带了test,一旦被调用,会被 ...

  8. 抓取 USB 总线LOG

    在实际工作中经常会遇到需要分析USB报文的情形.比如对比不同厂家4G/5G模块.解决实际IP over USB传输效率低下问题. 这时候如果能抓取到 USBMOM 总线的报文将会大有裨益.毕竟所有ho ...

  9. H5C3综合案例

    案例:实现步骤 1. 搭建HTML结构 <section> <div></div> <div></div> <div></ ...

  10. CEO的行为风格会影响公司业绩吗?

    中国的两大互联网巨头--腾讯和阿里,创始人的风格非常不同.在公众面前,马云的形象是高谈阔论,而马化腾则显得较为低调.在公司管理上,马云不插手具体事务,而是站在高处务虚,抓战略.抓文化,而马化腾则是腾讯 ...