![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Django
文章平均质量分 94
不怕猫的耗子z
这个作者很懒,什么都没留下…
展开
-
Django:验证和授权概述
验证和授权概述1、Django有一个内置的授权系统。用来处理用户、分组、权限以及基于cookie的会话系统。Django的授权系统包括验证和授权两个部分 ⑴验证是验证这个用户是否是他声称的人(比如用户名和密码验证,角色验证) ⑵授权是给与他相应的权限 2、实质上是把用户存在数据库中的数据和通过表单提交上来的数据做对比,看是否相等 ⑴认证的作用是确定用户的身份,比如是否是公司的员工,没是否是注册用户 ⑵权限的作用确定用户能够做什么,比如用户是否可以浏览付费咨询,如...原创 2021-07-22 18:07:40 · 515 阅读 · 1 评论 -
Django_Ajax与Django交互
AJAX1、AJAX即Asynchronous JavaScript and XML(异步的JavaScript和XML)2、AJAX是一种用于创建快速动态网页的技术 ⑴通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新jQueryjQuery是一个JavaScript函数库。jQuery 库包含以下特性: ⑴HTML元素选取 ⑵HTML元素操作 ⑶CSS操作 ⑷H...原创 2020-11-09 20:53:33 · 1090 阅读 · 1 评论 -
Django_装饰器
给视图添加装饰器1、在开发中,有时候需要给一些视图添加装饰器⑴如果是函数视图的话,那么就非常简单,只要在函数的上面写装饰器就可以了⑵如果是给类视图添加装饰器的话,就稍微有点复杂,并不能直接在类名上添加装饰器2、给类视图添加装饰器一共有两种写法,下面介绍(推荐第二种)给类视图添加装饰器装饰dispatch方法1、前面介绍过,如果是使用类视图的话:不管是get请求还是post请求,都会走dispatch(request,*args,**kwargs)方法,所以如果实...原创 2020-10-31 13:33:12 · 1752 阅读 · 2 评论 -
中间件_内置中间件
Django内置中间件在Django中也内置了很多中间件,这些中间件都放在settings.py文件中的MIDDLEWARE下例0:Django内置的中间件CommonMiddleware中间件1、CommonMiddleware中间件也叫通用中间件2、作用: ⑴限制在settings.DISALLOWED_USER_AGENTS中指定的请求头来访问本网站。DISALLOWED_USER_AGENTS是一个正则表达式的列表 ⑵如果开发者在定义URL的时候,最后有...原创 2020-10-24 13:43:00 · 543 阅读 · 0 评论 -
中间件_自定义中间件
什么是中间件1、中间件顾名思义,是介于request与response处理过程之间的一个插件(一道处理过程),相对比较轻量级,并且在全局上改变django的输入与输出(会影响到request对象和response对象的属性)。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能2、中间件是全局的:会影响到所有请求(视图函数),与前面的上下文处理器类似(上下文处理器也是全局的,只是上下文处理器不会影响到request对象和response对象)中间件有什么用1、如果想修改请求,例如修改传递到原创 2020-10-17 19:19:05 · 1236 阅读 · 1 评论 -
上下文处理器_内置上下文处理器
Django内置的上下文处理器1、上下文处理器是属于模板的,所以在TEMPLATES当中的context_processors ⑴Django中的Context Processor主要是应用于模板,完成页面的绘制的一些处理,也就是所说的页面渲染2、在settings.TEMPLATES.OPTIONS.context_processors中(也就是前面我们刚才添加上下文处理器的位置),有许多内置的上下文处理器。这些上下文处理器的作用如下3、不管是内置的上下文处理器还是自定义的上下文处理器...原创 2020-10-17 12:44:03 · 227 阅读 · 0 评论 -
上下文处理器_自定义上下文处理器
上下文1、上下文:Django视图函数传递给模板的数据叫做上下文(即content参数)2、一般来说,一个视图函数传递给模板的数据(上下文),只能在该模板中使用,其他模板是不能使用这些数据的(模板之间无继承、引用关系) ⑴A模板引用了B模板,即,B模板中的HTML代码以"变量"的形式添加到A模板中,此时B模板就相当于是A模板中的一部分 ⑵因此A模板视图函数传递给A模板的数据,在B模板中是可以使用的 ⑶注:即使C模板同时引用了B模板,但是C模板依旧不能使用A模板中的变量...原创 2020-10-15 22:42:58 · 391 阅读 · 1 评论 -
Session_Django中操作session
Session1、Session和Cookie的作用有点类似,都是为了存储用户相关的信息。不同的是: ⑴Cookie是存储在本地浏览器中(实际存在的) ⑵Session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现 ⑶虽然Session实现方式不一致,但是它们的目的都是服务器为了方便存储数据的。Session的出现,是为了解决Cookie存储数据不安全的问题2、Cookie是在浏览器端保存键值对数据,而Session是.........原创 2020-10-14 18:05:38 · 3364 阅读 · 1 评论 -
Cookie_Django中操作cookie
cookie1、在网站中,http请求是无状态的。也就是说即使第一次和服务器连接并且登录成功后,第二次请求服务器的时候服务器仍然不能知道当前是哪个用户的请求。cookie的出现就是为了解决这个问题2、第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存到本地,当该用户第二次请求服务器响应的时候,就会自动的把上次请求存储的cookie数据携带给服务器,服务器通过浏览器携带的数据就能判断是哪个用户请求数据了 ⑴第一次访问页面时,服务器将Cookie信息放在响应头中发送给客户端。...原创 2020-10-11 21:07:30 · 2198 阅读 · 0 评论 -
缓存_Django中使用Memcached
Django缓存设置Django中提供了多种缓存方式,如果要使用缓存,需要先在settings.py中进行配置,然后应用。根据缓存介质的不同,需要设置不同的缓存后台BackendMemcached缓存1、Memcached是基于内存的缓存,Django原生支持的最快最有效的缓存系统2、对于大多数场景,推荐使用Memcached,数据缓存在服务器端。使用前需要通过pip安装memcached的插件python-memcached和pylibmc,可以同时支持多个服务器上面的memcach.原创 2020-10-08 14:57:42 · 405 阅读 · 0 评论 -
缓存_memcached介绍
缓存1、在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面 ⑴当一个网站的用户访问量很大的时候,每一次的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力2、缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式3、目的:使用缓存可以大大提高程序的响应速度,增强用户体验 注:1、缓存一般用来存储临时数据 比如验证码(图形验证码、短信验证码)、登录sess...原创 2020-10-07 16:58:19 · 650 阅读 · 0 评论 -
表单_文件上传
文件上传1、文件上传时网站开发中非常常见的功能2、当Django处理上传一个文件的时候,文件数据被放在request.FILES ⑴因此可以在视图函数中使用request.FILES来获取前端传递上来的文件数据一般方法上传文件前端代码前端上传文件也是使用form表单和input标签。只是如果表单时用于上传文件的话,这两个表单需要特定的设置下属性,不然会造成文件无法上传等问题例1:⑴编辑模板<form action="{% url 'index' %}" m...原创 2020-09-19 20:56:49 · 3206 阅读 · 0 评论 -
表单_ModelForm
前言1、在写表单的时候,会发现表单中的Field和模型中的Field基本上是一模一样的。而且一般情况下表单中需要验证的数据就是我们模型中需要保存的数据。那么这个时候我们就可以将模型中的字段和表单中的字段进行绑定2、比如我们的数据库中有这样一张学生表,字段有姓名,年龄,爱好,邮箱,电话,住址,注册时间等等一大堆信息,现在让你写一个创建学生的页面,你的后台应该怎么写呢? ⑴前端:首先会在前端一个一个罗列出这些字段,让用户去填写,然后后台一个一个接收用户的输入 ⑵后台:定义一个学生模型,用...原创 2020-09-13 20:44:54 · 4557 阅读 · 1 评论 -
表单_验证器
常用验证器1、在验证某个字段的时候,可以传递一个validators参数用来指定验证器,进一步对数据进行过滤2、Django自带验证器有很多,但是很多验证器我们其实已经通过对应的Field或者一些参数就可以指定了 ⑴比如EmailValidator,我们可以通过EmailField来指定 ⑵比如MaxValueValidator,我们可以通过max_value参数来指定3、以下是一些常用的验证器:验证器名 描述 MaxValueValidator 验证最大...原创 2020-09-12 22:56:09 · 302 阅读 · 0 评论 -
表单_内置Filed
Django表单前面介绍了Django中form表单的重要作用有: 1、生成页面可执行的HTML标签 2、对应户的数据进行校验 3、保留上次输入的内容注:1、在实际开发中一般是不需要使用form表单来生成(渲染)前端页面的(前端页面都是单独开发的),最多的只是使用form表单的验证功能来验证前端提交的数据是否合法2、Django中form表单的验证功能一般是通过Filed来实现的,通过Filed和字段属性来设置数据的类型和属性常用的Filed使用Fi...原创 2020-09-06 14:08:12 · 441 阅读 · 0 评论 -
表单_基础
HTML中的表单1、单纯从前端的HTML来说,表单是用来提交数据给服务器的,不管后台的服务器用的是Django还是PHP语言还是其他语言。只要把input标签放在form标签中,然后在添加一个提交按钮,那么就以后点击提交按钮,就可以将input标签中对应的数据提交给服务器了2、在HTML种,表单是在<form>...</form>种的元素,它允许用户输入文本,选择选项,操作对象等,然后发送这些数据到服务器3、表单元素允许用户在表单种输入内容如:文本域(textarea)、原创 2020-08-23 20:19:39 · 676 阅读 · 0 评论 -
高级视图_状态码错误处理
错误处理1、在一些网站开发中,经常会需要捕获一些错误:不论是用户行为引起的错误,还是程序本身的错误都需要我们对其进行很合理的处理2、既然错误无法避免,那么就需要反馈错误信息,返回错误信息: ⑴一方面是为了在应用系统开发阶段,方便调试,添加相应的逻辑处理,提示用户 ⑵另一方面是应用系统运行时,可能会有潜在的异常风险,错误码能辅助定位和修复问题(日志)3、HTTP状态码是最常见的,通过提前协商处理服务状态的约定编码。HTTP状态码通常由三个数字组成,第一个数字定义了响应的类别,且只有...原创 2020-08-22 17:36:30 · 210 阅读 · 0 评论 -
高级视图_ListView类视图
ListView类视图1、在网站开发中,经常会出现需要列出某个表中的一些数据作为列表展示出来.比如文章列表,图书列表等等。在Django中可以使用ListView类视图来帮我们快速实现这种需求2、即:如果需要在模板中以列表的形式展示一些数据,那么就可以使用ListView类视图来快速实现3、ListView类视图跟前面介绍的View类视图和TemplateView类视图一样,都是为了方便我们快速实现某些特定功能的类视图 ⑴这些类视图jango已经封装好了的,我们只需要继承对应的类以及重写...原创 2020-08-20 20:28:23 · 433 阅读 · 0 评论 -
高级视图_类视图
Django类视图1、在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承、多态等2、django视图分为两种: ⑴FBV:基于函数的视图 ⑵CBV:基于类的视图 (Django中自带了几种类视图的定义方式,后面会逐步介绍) ⑶前面所学习的所有章节中都是使用函数来编写视图的:通过URL来确定对应的视图函数,使用函数来确定响应内容 ⑷使用类作为视图,会有很多方便的地方,比如类的继承等,另一方面就是更有利于项目、代...原创 2020-08-09 12:28:56 · 662 阅读 · 0 评论 -
高级视图_生成CSV文件
生成CSV文件有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来生成小的CSV文件处理方法:使用Python内置的CSV模块来处理CSV文件,且使用HttpResponse来将CSV文件返回回去例1:⑴编辑视图⑵下载效果注:1、在初始化HttpResponse的时候,指定了Content-Type为text/csv,这将告诉浏览器,这是一个csv格式的文件而不是一个HTML格式的文件 ⑴如果用默认值,默认值就是html,那...原创 2020-08-02 15:58:21 · 256 阅读 · 0 评论 -
高级视图_JsonResponse对象
JsonResponse对象1、JsonResponse类是用来将(任意)序列对象dumps成json字符串的。然后将json字符串封装成Response对象返回给浏览器,并且它的Content-Type默认为application/json2、JsonResponse是HttpResponse的一个子类(有很多的子类),用于帮助创建JSON编码的响应JsonResponse类语法class JsonResponse(data, encoder=DjangoJSONEncoder, .原创 2020-07-04 23:33:17 · 2881 阅读 · 0 评论 -
高级视图_HttpResponse对象
HttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的数据封装成httpRequest对象传给视图函数。那么视图处理完相关逻辑后,也需要返回一个响应给浏览器。而这个响应必须返回HttpResponseBase或者他的子类的对象,而HttpResponse就是HttpResponseBase中用得最多的子类对象 ⑴在django.http模块中定义了HttpResponse对象的API ⑵HttpRequest对象由Django自动创建,HttpResp...原创 2020-07-04 10:56:37 · 978 阅读 · 0 评论 -
高级视图_QueryDict对象
QueryDict对象1、在HttpRequest对象中,属性GET和POST得到的都是django.http.QueryDict所创建的实例。这是一个django自定义的类似字典的类,这个对象继承于dict,因此用法跟dict相差无几2、即:HttpRequest对象的GET或POST属性返回的返回值(使用request.GET或request.POST用来获取的前端传递过来的参数),是一个QueryDict对象,这个对象继承于dict,其用法与用法跟dict类似。只是说在某些特定的情况下,用来可原创 2020-06-20 15:09:16 · 556 阅读 · 0 评论 -
高级视图_HttpRequest对象
WSGIRequest对象1、Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整路径是django.core.handlers.wsgi.WSGIRequest2、WSGIRequest对象对象是继承于HttpRequest对象的3、我们在定义视图函数时,视图函数的第一个参数必须是reque原创 2020-06-14 15:35:43 · 597 阅读 · 0 评论 -
高级视图_重定向
重定向重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面.比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面.永久性重定向1、http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问2、最经典的就是京东网站,你输入www.jingdong.com的时候,会被重定向到www.jd.com,因为jingdong.com这个网址已经被废弃了,被改成jd.com,所以这种情况下应该.原创 2020-06-07 13:45:24 · 316 阅读 · 0 评论 -
高级视图_限制请求method
Django限制请求method常用的请求method1、GET请求:GET请求一般用来向服务器索取数据,不会向服务器提交数据,不会对服务器的状态进行更改。比如向服务器获取某篇文章的详情2、POST请求:POST请求一般是用来向服务器提交数据,会对副武器的状态进行更改。比如提交一篇文章给服务器(提交数据也可以使用GET请求,只是说安全性较低)限制请求装饰器Django内置的视图装饰器可以给视图提供一些限制。比如这个视图只能通过GET的method进行访问等注:1、一般来..原创 2020-05-17 22:57:03 · 360 阅读 · 0 评论 -
Django:模型_QuerySet对象实例
QuerySet对象实例前面几章学习了QuerySet对象的很多方法,在实际场景中可能需要几个不同的方法相互调用,才能实现最终的需求,特别是在根据多个表关系来查询数据时。所以要做到灵活的使用的话,还是需要多练习模型类后面会介绍几个实际例子,所有例子都是基于下面几个模型类来实现的例1:⑴模型类⑵查看数据:学生表⑶查看数据:老师表⑷查看数据:课程表⑸查看数据:成绩表查询每科平均成绩大于60分的同学和其平均成绩例2:使用自己的方法# -*- cod...原创 2020-05-16 19:06:02 · 816 阅读 · 0 评论 -
Django:模型_QuerySet对象_补充
QuerySet对象方法create()1、作用:创建一条数据,并且保存到数据库中2、这个方法相当于先用指定的模型创建一个对象,然后在调用这个对象的save方法例1:使用save()⑴编辑视图⑵查看数据例1_1:使用save()⑴编辑视图例子1_2:使用create()方法⑴编辑视图⑵编辑视图⑶查看数据注:从上面的例子可以看出使用create()方法就是:将需要存储的每个字段值作为关键字参数传递给create()方法,且不再需要使用save()方法..原创 2020-05-10 17:48:20 · 441 阅读 · 0 评论 -
Django:模型_QuerySet对象
QuerySet API我们通常做查询操作的时候都是通过"模型名字.objects"的方式进行操作的。其实"模型名字.objects"是一个"django.db.models.manager.Manager"对象,而Manager这个类是一个"空壳"的类,它本身是没有任何的属性和方法的。它的方法全部都是通过Python以动态添加的方式,从QuerySet类中拷贝过来的(至于是如何拷贝的后面简单的介绍下,知道就好)注:本章的所有例子,大都基于这个模型类例1:⑴打印"模型名字.ob..原创 2020-05-09 22:54:05 · 1513 阅读 · 0 评论 -
Django:模型_ORM聚合函数
聚合函数1、如果使用原生SQL来操作数据库,则可以使用聚合函数来提取数据等。比如提取你某个商品销售的数量,那么可以使用Count函数,如果想要知道商品销售的平均价格,那么可以使用AVG函数2、在Django的ORM模型中同样可以使用聚合函数来处理数据。在ORM模型中,聚合函数是通过aggregate()等方法来实现的3、上面第二点的意思为:所有的聚合函数都不能单独的执行,需要放在一些可...原创 2020-05-01 22:26:53 · 1137 阅读 · 0 评论 -
Django:模型_ORM查询条件_补充
基于双下划线的跨表查询1、Django 还提供了一种直观而高效的方式在查询(lookups)中表示关联关系,它能自动确认SQL JOIN联系。要做跨关系查询,就使用两个下划线来链接模型(model)间关联字段的名称,直到最终链接到你想要的model为止2、基于双下划线的跨表查询,其本质是使用join连接其他表进行查询(连表查询)3、基于双下划线的跨表查询:如果为正向查询(子表查询主表)...原创 2020-04-27 18:50:50 · 219 阅读 · 0 评论 -
Django:模型_ORM查询条件
查询操作1、查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求2、在ORM层面,这些查询条件都是使用field+__+condition的方式来使用的。其中condition是查询条件,类似于原生SQL语句中的WHERE过滤语句3、在使用原生SQL语句进行查找数据时,一般情...原创 2020-04-16 21:37:22 · 1335 阅读 · 0 评论 -
Django:模型_ORM表关系
表关系1、关系型数据库的表与表之间往往存在一定的关系,由于Django的模型是数据库表与Python类之间的映射,因此Django提供了3种最常用的数据库表之间关系的支持:一对多、一对一、多对多2、表之间的关系都是通过外键来进行关联的:所以我感觉这里的表关系其实就是对我们前面学习的外键进行的补充(在外键的基础上在进行细分)一对多1、一对多关系:是一张数据库表中的一条记录...原创 2020-04-11 22:58:38 · 429 阅读 · 0 评论 -
Django:模型_ORM外键使用
外键1、在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam。如果使用的是InnoDB引擎,是支持外键约束的。外键的存在使得ORM框架在处理表关系的时候异常的强大。MySQL数据库默认使用的也是InnoDB引擎。2、外键是相对于主键说的,是建立表之间的联系的必须的前提3、外键是指引用另外一个表中的一列或多列数据,被引用的列应该具有主键约束或者唯一性约束。外键用来建立...原创 2020-04-07 13:47:15 · 1909 阅读 · 1 评论 -
Django:模型_ORM常用Field介绍
模型常用属性1、在Django中定义了一些Field来与数据库表中的字段类型进行映射:即使用Field来定义表中列值的数据类型2、在model中添加字段的格式一般为:field_name = field_type(**field_options)AutoField1、映射到数据库中是int类型,可以有自动增长的特性。支持最大长度为11的整数2、一般不需要使用这个类型...原创 2020-03-31 21:44:48 · 1658 阅读 · 0 评论 -
Django:模型_ORM模型基础
为什么要用ORM模型1、在前面那章中我们介绍了如何在Django中使用原生SQL来操作数据库:直接在视图函数中执行对应的SQL语句2、随着项目越来越大,如果一直采用原生SQL的方式,那么在代码中会出现大量的SQL语句,就会出现很多问题: ⑴SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长,会出现很多相近的SQL语句 ⑵很多SQL语句是在业务逻辑中拼接出来的,如...原创 2020-03-29 21:59:28 · 1359 阅读 · 0 评论 -
Django:模型_数据库基础
数据库1、在网站开发中,数据库是网站的重要组成部分。只有提供数据库,数据才能够动态的展示,而不是在网页中显示一个静态的页面:视图函数从数据库中获取数据,然后在通过模板HTML进行显示,从而实现数据动态显示2、目前市面上有很多种类的数据库,比如有SQL Server、Oracle、Mysql等等,由于Mysql价格实惠、简单易用、不受平台限制、灵活性高等特性,目前已经取得了绝大多数的市场份额...原创 2020-03-27 22:30:19 · 197 阅读 · 0 评论 -
Django:模板系统_加载静态文件
加载静态文件1、在一个网页中,不仅仅只有一个HTML骨架,还需要有CSS样式文件、JS执行文件以及一些图片等(这些就被称为静态文件)。因此在DTL中加载静态文件是一个必须要解决的问题2、在DTL中,使用static标签来加载静态文件,要使用static标签的话,首先需要使用"{% load static %}"来标示加载静态文件3、加载静态文件的步骤如下: ⑴首先确保'djan...原创 2020-03-23 22:33:55 · 929 阅读 · 0 评论 -
Django:模板系统_模板结构优化
模板结构优化1、有时候一些代码是在许多模板中都会用到的。如果每次都重复的去拷贝代码那肯定是不符合项目规范的。一般我们可以把这些重复性的代码抽取出来,就类似于Python中的函数一样,以后想要使用这些代码的时候就可以直接导入、调用就可以了2、在DTL模板语法中提供了两种方法来引入其他模板:include标签和模板继承 ⑴include标签:就是在一个模板中引用另一个模板。感觉跟Pyt...原创 2020-03-23 20:32:55 · 231 阅读 · 0 评论 -
Django:模板系统_过滤器
过滤器1、在模板中,有时候需要对一些数据进行处理以后才能使用。一般在Python中我们是通过函数的形式来完成的。而在模板中,则是通过过滤器来实现的2、在Django中函数虽然能够在模板中执行,但是不能够传递参数,即不能使用圆括号的形式来传递参数。所以便有了过滤器3、其实,过滤器就是函数。滤器使用的是"|"符号来使用。比如使用add过滤器,那么示例代码为:{{ value|add:"2"...原创 2020-03-21 19:34:50 · 495 阅读 · 0 评论