列表页选项页大小每页中显示多少条数据,默认为每页显示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('键',默认值)可简写为
HttpReqeust对象服务器接收到http协议的请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好的对象就可以。视图的第一个参数必须是HttpRequest对象,在django.http模块中定义了HttpRequest对象的API。属性下面除非特别说明,属性都是只读的。path:一个字符串,表示请求的页面的完整路径,不包含域名和参数部分。metho
视图视图就是python中的函数,视图一般被定义在"应用/views.py"文件中,此例中为"booktest/views.py"文件。视图必须返回一个HttpResponse对象或子对象作为响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误等。视图的第一个参数必须为HttpRequest实例,还可能包含下参数如:通过正则表达式组获得的关键字参数。通过正则表达式组获取的位置参数。内
URLconf用户通过在浏览器的地址栏中输入网址请求网站,对于Django开发的网站,由哪一个视图进行处理请求,是由url匹配找到的。配置1)在test3/settings.py中通过ROOT_URLCONF指定url配置,默认已经有此配置。2)打开test3/urls.py可以看到默认配置。注意点在test3/urls.py中进行包含配置,在各自应用中创建具体配置。定义urlpatterns列表
视图视图的功能视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者。创建示例项目1) 创建项目test3。django-admin startproject test3进入项目目录,创建应用booktest。cd test3python manage.py startapp booktest3) 在test3/settings.py中INSTA
模型实例方法str():在将对象转换成字符串时会被调用。save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句。delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句。模型类的属性属性objects:管理器,是models.Manager类型的对象,用于与数据库进行交互。当没有为模型类定义管理器时,Django会为每一个模型类生
模型类关系关系字段类型关系型数据库的关系包括三种类型:ForeignKey:一对多,将字段定义在多的一端中。ManyToManyField:多对多,将字段定义在任意一端中。OneToOneField:一对一,将字段定义在任意一端中。可以维护递归的关联关系,使用'self'指定,详见"自关联"。一对多关系参见booktest应用中的BookInfo类和HeroInfo类。#定义图书模型类BookIn
查询集查询集表示从数据库中获取的对象集合,在管理器上调用某些过滤器方法会返回查询集,查询集可以含有零个、一个或多个过滤器。过滤器基于所给的参数限制查询的结果,从Sql的角度,查询集和select语句等价,过滤器像where和limit子句。返回查询集的过滤器如下:all():返回所有数据。filter():返回满足条件的数据。exclude():返回满足条件之外的数据,相当于sql语句中where
字段查询实现sql中where的功能,调用过滤器filter()、exclude()、get(),下面以filter()为例。通过"属性名_id"表示外键对应对象的id值。语法如下:说明:属性名称和比较运算符间使用两个下划线,所以属性名不能包括多个下划线。属性名称__比较运算符=值查看mysql数据库日志查看mysql数据库日志可以查看对数据库的操作记录。 mysql日志文件默认没有产生,需要做如
定义属性Django根据属性的类型确定以下信息:当前选择的数据库支持字段的类型渲染管理表单时使用的默认html控件在管理站点最低限度的验证django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。注意:pk是主键的别名,若主键名为
定义模型类模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件。模型类必须继承自Model类,位于包django.db.models中。提示:对于重要数据使用逻辑删除。示例演示接下来首先以"图书-英雄"管理为例进行演示,复习一下昨天的内容。1.打开booktest/models.py文件,定义模型类如下from django.db import m
ORM简介ORM,全拼Object-Relation Mapping,中文意为对象-关系映射,是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号