布署当项目开发完成后,需要将项目代码放到服务器上,这个服务器拥有固定的IP,再通过域名绑定,就可以供其它人浏览,对于python web开发,可以使用wsgi、apache服务器,此处以wsgi为例进行布署。服务器首先是物理上的一台性能高、线路全、运行稳定的机器,分为私有服务器、公有服务器。私有服务器:公司自己购买、自己维护,只布署自己的应用,可供公司内部或外网访问,成本高,需要专业人员维护,适合
celery情景:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等。使用celery后,情况就不一样了。解决:将耗时的程序放到celery中执行。点击查看celery官方网站点击查看celery中文文档celery名词:任务task:就是一个Python函数。
发送邮件Django中内置了邮件发送功能,被定义在django.core.mail模块中。发送邮件需要使用SMTP服务器,常用的免费服务器有:163、126、QQ,下面以163邮件为例。1)注册163邮箱itcast88,登录后设置。2)在新页面中点击“客户端授权密码”,勾选“开启”,弹出新窗口填写手机验证码。3)填写授权码。4)提示开启成功。5)打开test6/setti
全文检索全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理。haystack:全文检索的框架,支持whoosh、solr、Xapian、Elasticsearc四种全文检索引擎,点击查看官方网站。whoosh:纯Python编写的全文搜索引擎,虽然性能比不上sphinx、xapian、Elasticsearc等,但是无二进制包,程序不会莫名其妙的崩溃,对
富文本编辑器借助富文本编辑器,网站的编辑人员能够像使用offfice一样编写出漂亮的、所见即所得的页面。此处以tinymce为例,其它富文本编辑器的使用也是类似的。在虚拟环境中安装包。pip install django-tinymce==2.6.0安装完成后,可以使用在Admin管理中,也可以自定义表单使用。示例1)在test6/settings.py中为INSTALLED_APPS添加编辑器应
第三方本次课程中主要介绍一些常用的第三方Django模块,包括:富文本编辑器全文检索发送邮件celery布署当项目开发完成后,需要将代码放到服务器上,这个过程称为布署,服务器上需要有一个运行代码的环境,这个环境一般使用uWSGI+Nginx。创建示例项目1)在~/Desktop/pytest目录下,进入工作环境py_django。cd ~/Desktop/pytestworkon py_djang
本示例讲解在Django中使用jquery的ajax进行数据交互。 jquery框架中提供了$.ajax、$.get、$.post方法,用于进行异步交互,由于Django中默认使用CSRF约束,推荐使用$.get。示例:实现省市区的选择。最终实现效果如图:1)将jquery文件拷贝到static/js/目录下。2)打开booktest/views.py文件,定义视图area1,用于显示下拉列表。#
分页Django提供了数据分页的类,这些类被定义在django/core/paginator.py中。 类Paginator用于对列进行一页n条数据的分页运算。类Page用于表示第m页的数据。Paginator类实例对象方法_init_(列表,int):返回分页对象,第一个参数为列表数据,第二个参数为每页数据的条数。属性count:返回对象总数。属性num_pages:返回页面总数。属性page_
1.准备工作在python中进行图片操作,需要安装包PIL。pip install Pillow==3.4.1在Django中上传图片包括两种方式:在管理页面admin中上传图片自定义form表单中上传图片上传图片后,将图片存储在服务器上,然后将图片的路径存储在表中。创建包含图片的模型类将模型类的属性定义成models.ImageField类型。1)打开booktest/models.py文件,定
1)在templates/目录下创建admin目录,结构如下图:2)打开当前虚拟环境中Django的目录,再向下找到admin的模板,目录如下:/home/python/.virtualenvs/py_django/lib/python3.5/site-packages/django/contrib/admin/templates/admin3)将需要更改文件拷贝到第一步建好的目录里,此处以bas
编辑页选项显示字段顺序属性如下:fields=[]1)点击某行ID的链接,可以转到修改页面,默认效果如下图:2)打开booktest/admin.py文件,修改AreaAdmin类如下:class AreaAdmin(admin.ModelAdmin): ... fields=['aParent','atitle']3)刷新浏览器效果如下图:在下拉列表中输出的是对象的名称,可以在模型类
列表页选项页大小每页中显示多少条数据,默认为每页显示100条数据,属性如下:list_per_page=1001)打开booktest/admin.py文件,修改AreaAdmin类如下:class AreaAdmin(admin.ModelAdmin): list_per_page = 102)在浏览器中查看区域信息的列表页面,效果如下图:"操作选项"的位置顶部显示的属性,设置为True在
Admin站点内容发布的部分由网站的管理员负责查看、添加、修改、删除数据,开发这些重复的功能是一件单调乏味、缺乏创造力的工作,为此,Django能够根据定义的模型类自动地生成管理模块。在第一部分对管理站点做了简单介绍,现在做详细讲解。在Django项目中默认启用Admin管理站点。1)准备工作:创建管理员的用户名和密码。python manage.py createsuperuser按提示填写用户
中间件Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性,其它的MVC框架也有这个功能,名称为IoC。Django在中间件中预置了五个方法,这五个方法的区别在于不同的阶段执行,对输入或输出进行干预,方法如下:1)初始化:无需任何参数,服务器响应第
静态文件项目中的CSS、图片、js都是静态文件。一般会将静态文件放到一个单独的目录中,以方便管理。在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径。静态文件可以放在项目根目录下,也可以放在应用的目录下,由于有些静态文件在项目中是通用的,所以推荐放在项目的根目录下,方便管理。示例1)在test5/settings.py文件中定义静态文件存放的物理目
常用到此为止,关于Django框架的三大块M、V、T已经全部讲完了,接下来学习一些其它的知识点,这些知识点不在三大块范围内,Django提供了这些功能后,可以帮助我们更快更好的完成开发。主要知识点如下:静态文件处理中间件上传图片Admin站点分页示例:省市区选择,jquery,ajax创建示例项目1)创建项目test5。django-admin startproject test52)进入项目目录
验证码在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻业务服务器、数据库服务器的压力。手动实现验证码接下来的代码不要求手动写出来,因为这种代码在网上可以搜到很多。1)安装包Pillow3.4.1。pip install Pillow==3.4.1点击查看PIL模块API,以下代码中用到了Image、ImageDraw、ImageFont
CSRFCSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。CSRF指攻(敏感词)击者盗用了你的身份,以你的名义发送恶意请求。CSRF能够做的事情包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟(敏感词)货币转账......造成的问题包括:个人隐私泄露以及财产安全。CSRF示意图如下:如果想防止CSRF,首先是重要的信息传递都采用POST方式而不
HTML转义模板对上下文传递的字符串进行输出时,会对以下字符自动转义。小于号< 转换为 <大于号> 转换为 >单引号' 转换为 '双引号" 转换为 "与符号& 转换为 &示例1)打开booktest/views.py文件,创建视图html_escape。def html_escape(request): context={'content':'<
模板继承模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。典型应用:网站的头部、尾部信息。父模板如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中。标签block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给endblock标签写上名字,这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来
1.变量模板变量的作用是计算并输出,变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。语法如下:{{变量}}当模版引擎遇到点如book.title,会按照下列顺序解析:1.字典book['title']2.先属性后方法,将book当作对象,查找属性title,如果没有再查找方法title()3.如果是格式为book.0则解析为列表book[0]如果变量不存在则插入空字符串''。在模板中调
模板作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器。模版致力于表达外观,而不是程序逻辑。模板的设计实现了业务逻辑view与显示内容template的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用。模板包含两部分:静态部分,包含html、css、js。动态部
Session对于敏感、重要的信息,建议要储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息。在服务器端进行状态保持的方案就是Session。启用SessionDjango项目默认启用Session。打开test3/settings.py文件,在项MIDDLEWARE_CLASSES中启用Session中间件。禁用Session:将Session中间件删除。存储方式打开test3
无
状态保持浏览器请求服务器是无状态的。无状态指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。无状态的应用层面的原因是:浏览器和服务器之间的通信都遵守HTTP协议。根本原因是:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的Socket连接,而且服务器也会在处理页面完毕之后销毁页面对象。有时需要保存下来用户浏览的状
子类HttpResponseRedirect当一个逻辑处理完成后,不需要向客户端呈现数据,而是转回到其它页面,如添加成功、修改成功、删除成功后显示数据列表,而数据的列表视图已经开发完成,此时不需要重新编写列表的代码,而是转到这个视图就可以,此时就需要模拟一个用户请求的效果,从一个视图转到另外一个视图,就称为重定向。Django中提供了HttpResponseRedirect对象实现重定向功能,这个
在浏览器中使用javascript发起ajax请求时,返回json格式的数据,此处以jquery的get()方法为例。类JsonResponse继承自HttpResponse对象,被定义在django.http模块中,创建对象时接收字典作为参数。JsonResponse对象的content-type为'application/json'。示例1)在booktest/views.py文件中定义视图j
HttpResponse对象视图在接收请求并处理后,必须返回HttpResponse对象或子对象。在django.http模块中定义了HttpResponse对象的API。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。运行服务器,在浏览器中浏览首页,可以在浏览器“开发者工具”中看到响应信息如下图:标号3为响应头信息,点击标号4处可以查看响应体信息。属性c
GET属性请求格式:在请求地址结尾使用?,之后以"键=值"的格式拼接,多个键值对之间以&连接。例:网址如下http://www.itcast.cn/?a=10&b=20&c=python其中的请求参数为:a=10&b=20&c=python分析请求参数,键为'a'、'b'、'c',值为'10'、'20'、'python'。在Django中可以使用HttpRe
QueryDict对象定义在django.http.QueryDictHttpRequest对象的属性GET、POST都是QueryDict类型的对象与python字典不同,QueryDict类型的对象用来处理同一个键带有多个值的情况方法get():根据键获取值如果一个键同时拥有多个值将获取最后一个值如果键不存在则返回None值,可以设置默认值进行后续处理dict.get('键',默认值)可简写为
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号