一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view . 今天补充另外一种路由关系的写法:CBV,即:class base view , 也可以看做为面向资源编程的另外一种叫法,类似tornado中的路由写法. 1. 建立路由关系urls.py from app01 import views urlpatterns = [ url(r'^home/',…
Django路由系统 Django的路由系统让Django可以根据URI进行匹配,进而发送至特定的函数去处理用户请求.有点类似nginx的location功能. Django的路由关系分为三种:普通关系.动态关系.分组分发.这三种关系都记录在urls.py中. 路由-普通关系 普通关系表示一个url对应一个函数,例如: urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^login/', views.login), url(r'^de…
前言 用过Django框架的童鞋肯定都知道,在创建完Django项目后,每个app下,都会有一个urls.py文件,里边会有如下几行: from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), ] 上边看到导入的admin模块,就是本节所要说的主要内容 主要功能 功能1:提供数据库管理功能 基于admin模块,可以实现类似数据库客户端的功能,对数据进行增删改查 功能2:二次开发 基于该模块…
Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 相当于我们创建了一个hook. 1. Django的内置信号 Model signals pre_init # django的modal执行其构造方法前,自动触发 post_init # django的modal执行其构造方法后,自动触发 pre_save # django的modal对象保存前,自动触发 post_save # django的modal对象保存后…
前言 在正式说Django中间件之前需要先了解Django一个完整的request的处理流程.我从其他网站扒了几张图过来. 图片一: 文字流程说明:如图所示,一个 HTTP 请求,首先被转化成一个 HttpRequest 对象,然后该对象被传递给 Request 中间件处理,如果该中间件返回了Response,则直接传递给 Response 中间件做收尾处理.否则的话 Request 中间件将访问 URL 配置,确定哪个 view 来处理,在确定了哪个 view 要执行,但是还没有执行该 vie…
一.简单使用案例 #views.py #views.py from django.shortcuts import render,HttpResponse from app01 import models from django import forms from django.forms import fields as Ffields from django.forms import widgets as Fwidgets class UserInfoModelForm(forms.Mode…
一.钩子功能提供的数据验证 对于数据验证,django会执行 full_clean()方法进行验证.full_clean验证会经历几个步骤,首先,对于model的每个字段进行正则验证,正则验证通过后,然后进行clean()方法验证,这里的clean函数,就是钩子函数.通常是需要我们自己去书写. 分析上述钩子函数的弊端:如果在model数据库中,有多个字段都需要进行数据验证,则需要在每个字段后都需要有钩子存在才可以,而clean方法是对整体进行数据验证,并不能完成对于每个字段的验证. 结论:由于钩…
Django的分页没有多少需要说的,有一点需要关注,在自定制分页功能的时候,需要通过python代码来生成每一页的a标签链接,这个时候需要关注一点:默认情况下,为了安全考虑,防范XSS攻击,Django会把后端生成的代码直接输出到前端,不会经过翻译为html语言.这个时候用户看到的界面就是<a href="/page?p=X">第X页</a>这样的 标签语言,而不是一个真正的可点击的a标签. 如果想让Django对后端生成的html代码进行渲染,需要导入一个新的…
Django中提供了6种缓存方式: 开发调试 内存 文件 数据库 Memcache缓存(python-memcached模块) Memcache缓存(pylibmc模块) 1. 开发调试 # 此为开始调试用,实际内部不做任何操作 # 配置: CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 引擎 'TIMEOUT': 300, # 缓存超时时间(默认300,None表示永不过期,…
Model中的F F 的操作通常的应用场景在于:公司对于每个员工,都涨500的工资.这个时候F就可以作为查询条件 from django.db.models import F models.UserInfo.objects.filter().update(salary=F('salary')+500) # F('salary')就表示salary在这行记录中的值. F的使用场景基本就是这样,比较简单. Model中的Q Q 的操作通常的应用场景在于:构造搜索条件. 普通filter搜索条件支持三…