Django
Django
杨林伟
像火箭科学家一样思考!
展开
-
34 Django高级 - 布署
本文将从uwsgi、nginx、静态文件三个方面处理服务器介绍服务器:私有服务器、公有服务器私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问公有服务器:集成好运营环境,销售空间或主机,供其布署自己的应用私有服务器成本高,需要专业人员维护,适合大公司使用公有服务器适合初创公司使用,成本低常用的公有服务器,如阿里云、青云等,可根据需要,按流量收费或按时间收费...原创 2019-08-28 19:22:02 · 322 阅读 · 0 评论 -
33 Django高级 - celery
示例一:用户发起request,并等待response返回。在这些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验。示例二:网站每小时需要同步一次天气预报信息,但是http是请求触发的,难道要一小时请求一次吗?使用c`INSTALLED_APPS = (…‘djcelery’,}…import djcelerydjcelery.setup_lo...原创 2019-08-28 19:09:58 · 379 阅读 · 0 评论 -
32 Django高级 - 全文检索
全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理haystack:django的一个包,可以方便地对model里面的内容进行索引、搜索,设计为支持whoosh,solr,Xapian,Elasticsearc四种全文检索引擎后端,属于一种全文检索的框架whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elastic...原创 2019-08-28 19:05:02 · 405 阅读 · 0 评论 -
31 Django高级 - 缓存
对于中等流量的网站来说,尽可能地减少开销是必要的。缓存数据就是为了保存那些需要很多计算资源的结果,这样的话就不必在下次重复消耗计算资源Django自带了一个健壮的缓存系统来保存动态页面,避免对于每次请求都重新计算Django提供了不同级别的缓存粒度:可以缓存特定视图的输出、可以仅仅缓存那些很难生产出来的部分、或者可以缓存整个网站1.设置缓存通过设置决定把数据缓存在哪里,是数据库中、文...原创 2019-08-28 17:53:44 · 263 阅读 · 0 评论 -
30 Django高级 - 富文本编辑器
借助富文本编辑器,管理员能够编辑出来一个包含html的页面,从而页面的显示效果,可以由管理员定义,而不用完全依赖于前期开发人员此处以tinymce为例,其它富文本编辑器的使用可以自行学习使用编辑器的显示效果为:下载安装在网站pypi网站搜索并下载"django-tinymce-2.4.0"解压tar zxvf django-tinymce-2.4.0.tar.gz进入解压后的...原创 2019-08-28 17:49:18 · 370 阅读 · 0 评论 -
29 Django高级- Ajax
1.使用Ajax使用视图通过上下文向模板中传递数据,需要先加载完成模板的静态页面,再执行模型代码,生成最张的html,返回给浏览器,这个过程将页面与数据集成到了一起,扩展性差改进方案:通过ajax的方式获取数据,通过dom操作将数据呈现到界面上推荐使用框架的ajax相关方法,不要使用XMLHttpRequest对象,因为操作麻烦且不容易查错jquery框架中提供了.ajax、.ajax、...原创 2019-08-28 17:42:25 · 314 阅读 · 0 评论 -
28 Django高级- 分页
Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中。1.Paginator对象Paginator(列表,int):返回分页对象,参数为列表数据,每面数据的条数。1.1 属性count:对象总数num_pages:页面总数page_range:页码列表,从1开始,例如[1, 2, 3, 4]1.2 方法page(num):下标...原创 2019-08-28 17:36:32 · 320 阅读 · 0 评论 -
27 Django高级- Admin站点
1.Admin站点通过使用startproject创建的项目模版中,默认Admin被启用1.创建管理员的用户名和密码python manage.py createsuperuser然后按提示填写用户名、邮箱、密码2.在应用内admin.py文件完成注册,就可以在后台管理中维护模型的数据from django.contrib import adminfrom models impor...原创 2019-08-28 17:32:26 · 387 阅读 · 0 评论 -
26 Django高级- 上传图片
当Django在处理文件上传的时候,文件数据被保存在request.FILES,FILES中的每个键为<input type="file" name="" />中的name。注意FILES只有在请求的方法为POST 且提交的带有enctype=“multipart/form-data” 的情况下才会包含数据。否则,FILES 将为一个空的类似于字典的对象。使用模型处理上传文件:将属...原创 2019-08-28 17:24:47 · 263 阅读 · 0 评论 -
25 Django高级- 中间件
中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出激活:添加到Django配置文件中的MIDDLEWARE_CLASSES元组中每个中间件组件是一个独立的Python类,可以定义下面方法中的一个或多个_init _:无需任何参数,服务器响应第一个请求的时候调用一次,用于确定是否启用当前中间件process_request(reque...原创 2019-08-28 17:21:43 · 273 阅读 · 0 评论 -
24 Django高级- 管理静态文件
项目中的CSS、图片、js都是静态文件,下面来讲解配置静态文件。1.在settings 文件中定义静态内容STATIC_URL = '/static/'STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'),]2.在项目根目录下创建static目录,再创建当前应用名称的目录mysite/static/myapp/3.在模...原创 2019-08-28 17:19:46 · 257 阅读 · 0 评论 -
23 Django模板 - 验证码案例
在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻一些服务器的压力使用验证码也是一种有效的防止crsf的方法验证码效果如下图:1.验证码视图新建viewsUtil.py,定义函数verifycode此段代码用到了PIL中的Image、ImageDraw、ImageFont模块,需要先安装Pillow(3.4.1)包,详细文档参考...原创 2019-08-28 17:15:10 · 435 阅读 · 0 评论 -
22 Django模板 - csrf
1.CSRF全称Cross Site Request Forgery,跨站请求伪造某些恶意网站上包含链接、表单按钮或者JavaScript,它们利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击演示csrf如下:创建视图csrf1用于展示表单,csrf2用于接收post请求def csrf1(request): return render(re...原创 2019-08-28 17:10:28 · 360 阅读 · 0 评论 -
21 Django模板 - HTML转义
Django对字符串进行自动HTML转义,如在模板中输出如下值:视图代码:def index(request): return render(request, 'temtest/index2.html', { 't1': '<h1>hello</h1>' ...原创 2019-08-28 17:04:08 · 349 阅读 · 0 评论 -
20 Django模板 - 模板继承
1. 模板继承模板继承可以减少页面内容的重复定义,实现页面内容的重用典型应用:网站的头部、尾部是一样的,这些内容可以定义在父模板中,子模板不需要重复定义block标签:在父模板中预留区域,在子模板中填充extends继承:继承,写在模板文件的第一行定义父模板base.html{ %block block_name%}这里可以定义默认值如果不定义默认值,则表示空字符串{ %en...原创 2019-08-28 16:59:19 · 248 阅读 · 0 评论 -
19 Django模板 - 定义模板
模板语言包括:变量标签 { % 代码块 % }过滤器注释{# 代码或html #}1.变量语法:{{ variable }}当模版引擎遇到一个变量,将计算这个变量,然后将结果输出变量名必须由字母、数字、下划线(不能以下划线开头)和点组成当模版引擎遇到点("."),会按照下列顺序查询:---- 1. 字典查询,例如:foo[“bar”]---- 2....原创 2019-08-28 16:49:15 · 319 阅读 · 0 评论 -
18 Django模板 - 介绍
1.模板介绍作为Web框架,Django提供了模板,可以很便利的动态生成HTML模版系统致力于表达外观,而不是程序逻辑模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用模板包含HTML的静态部分---- 动态插入内容部分---- Django模板语言,简写DTL,定义在django.template包中...原创 2019-08-28 16:38:11 · 315 阅读 · 0 评论 -
17 Django视图 - 状态保持
1. 状态保持http协议是无状态的:每次请求都是一次新的请求,不会记得之前通信的状态客户端与服务器端的一次通信,就是一次会话实现状态保持的方式:在客户端或服务器端存储与会话有关的数据存储方式包括cookie、session,会话一般指session对象使用cookie,所有数据存储在客户端,注意不要存储敏感信息推荐使用sesison方式,所有数据存储在服务器端...原创 2019-08-28 16:32:11 · 346 阅读 · 0 评论 -
16 Django视图 - HttpResponse对象
1.HttpResponse对象在django.http模块中定义了HttpResponse对象的APIHttpRequest对象由Django自动创建,HttpResponse对象由程序员创建不调用模板,直接返回数据#coding=utf-8from django.http import HttpResponsedef index(request): ret...原创 2019-08-28 16:12:11 · 406 阅读 · 0 评论 -
15 Django视图 - HttpReqeust对象
1. HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象视图函数的第一个参数是HttpRequest对象在django.http模块中定义了HttpRequest对象的API1.1 属性下面除非特别说明,属性都是只读的path:一个字符串,表示请求的页面的完整路径,不包含域名method:一个字符串,表示请求使用的HTTP方法,...原创 2019-08-28 15:51:10 · 300 阅读 · 0 评论 -
14 Django视图 - 视图函数
定义视图本质就是一个函数视图的参数一个HttpRequest实例通过正则表达式组获取的位置参数通过正则表达式组获得的关键字参数在应用目录下默认有views.py文件,一般视图都定义在这个文件中如果处理功能过多,可以将函数定义到不同的py文件中新建views1.py#coding:utf-8from django.http import HttpResponsedef in...原创 2019-08-28 15:37:53 · 326 阅读 · 0 评论 -
13 Django视图 - URLconf
URLconf在settings.py文件中通过ROOT_URLCONF指定根级url的配置urlpatterns是一个url()实例的列表一个url()对象包括:正则表达式视图函数名称name编写URLconf的注意:若要从url中捕获一个值,需要在它周围设置一对圆括号不需要添加一个前导的反斜杠,如应该写作’test/’,而不应该写作’/test/’每个正则...原创 2019-08-28 15:33:15 · 278 阅读 · 0 评论 -
12 Django视图 - 介绍
视图接受Web请求并且返回Web响应视图就是一个python函数,被定义在views.py中响应可以是一张网页的HTML内容,一个重定向,一个404错误等等响应处理过程如下图:...原创 2019-08-28 15:28:38 · 255 阅读 · 0 评论 -
11 Django模型 - 自连接
对于地区信息,属于一对多关系,使用一张表,存储所有的信息类似的表结构还应用于分类信息,可以实现无限级分类新建模型AreaInfo,生成迁移class AreaInfo(models.Model): atitle = models.CharField(max_length=20) aParent = models.ForeignKey('self', null=True, bl...原创 2019-08-28 15:27:03 · 382 阅读 · 0 评论 -
10 Django模型 - 模型查询
1. 概览查询集表示从数据库中获取的对象集合查询集可以含有零个、一个或多个过滤器过滤器基于所给的参数限制查询的结果从Sql的角度,查询集和select语句等价,过滤器像where和limit子句接下来主要讨论如下知识点:查询集字段查询:比较运算符,F对象,Q对象2.查询集在管理器上调用过滤器方法会返回查询集查询集经过过滤器筛选后返回新的查询集,因...原创 2019-08-28 15:20:08 · 255 阅读 · 0 评论 -
09 Django模型 - 模型成员
1.类的属性objects:是Manager类型的对象,用于与数据库进行交互当定义模型类时没有指定管理器,则Django会为模型类提供一个名为objects的管理器支持明确指定模型类的管理器class BookInfo(models.Model): ... books = models.Manager()当为模型类指定管理器后,django不再为模型类生成名为objec...原创 2019-08-28 15:08:52 · 328 阅读 · 0 评论 -
08 Django模型 - 定义模型
1.定义模型在模型中定义属性,会生成表中的字段。django根据属性的类型确定以下信息:当前选择的数据库支持字段的类型渲染管理表单时使用的默认html控件在管理站点最低限度的验证django会为表增加自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后,则django不会再生成默认的主键列。属性命名限制不能是python的保留关键字由于djan...原创 2019-08-28 10:19:24 · 363 阅读 · 0 评论 -
07 Django模型 - ORM简介及MySQL数据库的使用
1.ORM简介MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库。ORM是“对象-关系-映射”的简称,主要任务是:根据对象的类型生成表结构将对象、列表的操作,转换为sql语句将sql查询到的结果转换为对象、列表这极大的减轻了开发人员的工作量,不需要面对因数据库变更而导致的无效劳动。...原创 2019-08-28 10:05:01 · 387 阅读 · 0 评论 -
06 Django入门 - 模型(介绍)
1.模板模板是html页面,可以根据视图中传递的数据填充值创建模板的目录如下图:修改settings.py文件,设置TEMPLATES的DIRS值'DIRS': [os.path.join(BASE_DIR, 'templates')],在模板中访问视图传递的数据{{输出值,可以是变量,也可以是对象.属性}}{%执行代码段%}1.1 定义index.html模板:<!...原创 2019-08-28 09:47:08 · 267 阅读 · 0 评论 -
05 Django入门 - 视图(介绍)
在django中,视图对WEB请求进行回应视图接收reqeust对象作为第一个参数,包含了请求的信息视图就是一个Python函数,被定义在views.py中#coding:utf-8from django.http import HttpResponsedef index(request): return HttpResponse("index")def detail(req...原创 2019-08-28 09:39:58 · 289 阅读 · 0 评论 -
04 Django入门 - 管理站点
1.服务器运行如下命令可以开启服务器python manage.py runserver ip:port可以不写ip,默认端口为8000这是一个纯python编写的轻量级web服务器,仅在开发阶段使用服务器成功启动后,提示如下信息默认端口是8000,可以修改端口python manage.py runserver 8080打开浏览器,输入网址“127.0.0.1:8080”...原创 2019-08-27 17:56:22 · 265 阅读 · 0 评论 -
03 Django入门 - 设计模型(介绍)
本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书、英雄,图书-英雄的关系为一对多。图书表结构设计(BookInfo表):名称列名图书名称btitle图书发布时间bpub_date英雄表结构设计(HeroInfo表):名称列名英雄姓名hname英雄性别hgender英雄简介hcontent所属图书hbo...原创 2019-08-27 15:30:02 · 270 阅读 · 0 评论 -
02 Django入门 - 虚拟环境下安装django
1.创建虚拟环境如果没有安装虚拟环境,请参考:https://blog.csdn.net/gyniu/article/details/81022534创建:mkvirtualenv [虚拟环境名称]删除:rmvirtualenv [虚拟环境名称]进入:workon [虚拟环境名称]退出:deactivate所有的虚拟环境,都位于/home/.virtualenvs目录下,进入虚拟环境前...原创 2019-08-27 10:44:14 · 409 阅读 · 0 评论 -
01 Django入门 - MVT框架介绍
MVC大部分开发语言中都有MVC框架MVC框架的核心思想是:解耦降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用m表示model,主要用于对数据库层的封装v表示view,用于向用户展示结果c表示controller,是核心,用于处理请求、获取数据、返回结果MVTDjango是一款python的web开发框架与MVC有所不同,属于MVT框架m表...原创 2019-08-26 19:46:47 · 578 阅读 · 0 评论