Django
橘九。
进击的小白
展开
-
40.Django_类视图_生成swagger接口文档
网上很多资料在介绍Django接入Swagger方法时,都是基于django-rest-swagger库进行讲解的,都殊不知,从2019年6月份开始,官方已经废弃了该库,在django 3.0中已经不支持该库了,取而代之的是全新的第三方drf-yasg库。1.安装库pip3 install drf-yasg2.注册应用settings.py文件中进行注册第三方应用INSTALLED_...原创 2020-01-16 14:14:40 · 583 阅读 · 2 评论 -
39.Django_类视图_coreapi生成接口文档
这一节看一下api接口文档的生成;使用coreapi生成:1.安装第三方库:pip3 install coreapi2.配置文件中添加配置在settings.py文件中REST_FRAMEWORK = { # 指定用于支持coreapi的Schema 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.Aut...原创 2020-01-16 11:39:41 · 2376 阅读 · 0 评论 -
38.Django_类视图_router方法
在urls.py文件中定义路由from django.urls import path, includefrom rest_framework import routersfrom projects import viewsfrom projects.views1 import ProjectsList, ProjectDetailfrom . import views1# ## ...原创 2020-01-15 15:57:45 · 198 阅读 · 0 评论 -
37.Django_类视图_action自定义方法
serializer.py文件中添加如下代码class ProjectNameSerializer(serializers.ModelSerializer): class Meta: model = Projects # 2.指定模型类都使用哪些字段,来生成序列化器 # 使用全部字段 fields = ("id","name...原创 2020-01-10 14:05:52 · 1238 阅读 · 0 评论 -
36.Django_类视图_viewsets
之前的方式发现吧有无参数的都是分开两个方法,现在我们统一一下:使用viewsets.ModelViewSet现在再次修改一下views.py文件的代码看下:from projects.models import Projectsfrom projects.serializer import ProjectsModelSerializerfrom rest_framework.generi...原创 2020-01-09 14:15:40 · 359 阅读 · 0 评论 -
35.Django_类视图_Mixins
痛点经过之前的过滤引擎、分页引擎的学习后,会发现view视图的代码越来越多,复用和维护又变得困难了。本次就想方法来解决这个痛点一、回顾views.py中,关于project的代码1.1、5个方法,分为了两个类来写的原因ProjectsList类:都是不需要id值的a.添加project信息的post方法b.获取所有的project信息的get方法。-ProjectDetail类:都是...原创 2019-12-26 18:26:25 · 311 阅读 · 0 评论 -
34.Django_类视图_GenericAPIView_过滤引擎_分页
常见的需求:分页返回查询到的结果一、pagination分页类使用rest framework官方的pagination分页引擎,提供了三种分页类:1.PageNumberPagination:根据页数进行分页2.LimitOffsetPagination:根据偏移量进行分页3.CursorPagination:根据游标进行分页二、PageNumberPagination:根据页数进行...原创 2019-12-26 17:50:51 · 173 阅读 · 0 评论 -
33.Django_类视图_GenericAPIView过滤引擎_查询
一个十分常见的需求:根据某个/某些字段进行过滤(查询)得出结果(全匹配)django_filters使用rest framework官方的django_filters开源查询过滤引擎,就可以在视图,或全局设置查询过滤引擎1. 安装和注册 django_filters安装pip install django_filterspip install -i https://pypi.dou...原创 2019-12-26 17:02:47 · 354 阅读 · 0 评论 -
32.Django_类视图_GenericAPIView过滤引擎_排序
GenericAPIView继承于APIView,为常用的列表视图和详细视图提供了一些操作属性方法。1. 使用GenericAPIView时需要导入对应模块:from rest_framework import generics2.常用属性和方法:.queryset指定要显示的Model对象的QuerySet对象(查询集),用于列表视图中。在GenericAPIView中必须指定该...原创 2019-12-10 17:38:01 · 269 阅读 · 0 评论 -
31.Django_framework_APIView
我们之前的传入参数都是json格式,如果很多请求参数的格式都是form表单等格式需要怎么操作,之前的模式直接穿参数会报错:我们需要解决既支持json格式传入参数,又支持form表单格式传入参数:导入APIViewfrom rest_framework.views import APIView修改之前的继承View为APIView;class ProjectsList(APIVi...原创 2019-12-10 17:15:55 · 182 阅读 · 0 评论 -
30.Django_framework_序列化器之自定义外键
Django_framework_模型序列化器ModelSerializer再看一下接口的模型类:之前定义的projects/model.pyfrom django.db import models# Create your models here.class Interfaces(models.Model): # 创建Projects模型类 name = mod...原创 2019-12-09 19:05:47 · 1410 阅读 · 0 评论 -
29.Django_framework_模型序列化器ModelSerializer
这一节再简化一下上一节的序列化器,用模型类序列化器自动生成序列化器,1. ModelSerializer类ModelSerializer类能够让我们自动你创建一个具有对应模型类中,相对应字段的Serializer类ModelSerializer类直接继承了Serializer类,不同的是:它根据model模型的定义,自动生成默认字段。它自动生成序列化器的验证器,比如unique_tog...原创 2019-12-07 11:42:18 · 253 阅读 · 0 评论 -
28.Django_framework_优化新增和修改方法
1.优化的前提,需了解在views.py的方法中,创建序列化器对象时,如果只传参data,那么在调用save()方法时,实际上调用的是序列化器对象的create()方法在views.py的方法中,创建序列化器对象时,如果传参data和instance,那么在调用save()方法时,实际上调用的是序列化器对象的update()方法2.基于上面,可进行的优化可重写序列化器对象的creat...原创 2019-12-06 18:27:19 · 141 阅读 · 0 评论 -
27. Django_framework_序列化器和自定义校验
一、序列化器中的类属性字段序列化中所定义的类属性字段,一般情况下与模型类字段相对应默认情况下,这些类属性字段既可以进行序列化输出,也可以进行反序列化输入不需要输入(反序列化)、输出(序列化)的字段,则不需要定义只需要反序列化输入,则定义write_only = True只需要序列化输出,则定义read_only = True响应的参数如果是多个查询集,需要在JsonResponse(...原创 2019-12-04 22:46:37 · 919 阅读 · 0 评论 -
26. Django_framework_反序列化和前端校验
反序列化优化:校验前端参数之前的代码中,因为太繁琐,就省略了对前端传递的参数进行正确性校验。在这里,我们对这部分进行优化调用序列化器对象的is_valid方法,校验前端参数的正确性校验成功返回True校验失败返回Falseserializer.is_vaild(raise_exception = True)校验失败会抛出异常当调用is_valid()方法后,就可以调用s...原创 2019-12-04 22:06:38 · 329 阅读 · 0 评论 -
25. Django_framework_序列化2
新增接口: def post(self,request): #新增项目 json_data = request.body.decode('utf-8') python_data= json.loads(json_data,encoding='utf-8') project = Projects.objects.create(**py...原创 2019-12-04 17:11:21 · 116 阅读 · 0 评论 -
24.Django_framework_序列化
上一篇说了使用Django传统写CRUD的痛点,那么现在就说解决这些痛点的方法Django REST framework简称为DRF框架或者REST freamwork框架是在Django框架的基础上,进行二次开发的适用于构建符合RESTful风格的API一、特性提供了强大的Serializer序列化器,可以高效地进行序列化与反序列化操作提供了丰富的类视图、Mixin扩展类、V...原创 2019-12-02 18:20:54 · 113 阅读 · 0 评论 -
23.Django_基础阶段综合演练总结
设计总结校验用户数据例如传入参数是否存在,格式是否正确,是否可重复等判断;将前端传入的请求数据转换(json格式)转换为模型类对象;反序列化;反序列化:将格式如json,xml转换为程序中的类型;将json格式的字符串转换为Django中的模型类对象; #1. 先将json格式数据转换为嵌套字典列表 json_data = request.body.de...原创 2019-11-30 21:38:20 · 95 阅读 · 0 评论 -
22.Django_基础阶段综合演练_传统方式
传统编写CRUD1.获取所有项目已经创建好的model在projects/views.py中创建获取项目列表的接口:class ProjectsList(View): def get(self,request):# get请求中,就算用不上request,也需要设置这个参数 #1>从数据库获取所有项目信息,列表格式 projects_qs = ...原创 2019-11-29 17:47:34 · 116 阅读 · 0 评论 -
21.Django_RESTful简介
RESTREST是REpresentationsal State Transfer的缩写,具象状态转换RESTful是一种开发理念,是一种API设计风格,而不是标准主要的规范每一个URL代表一种资源,具体要对资源进行什么操作,是根据请求方式来区分的,而不是在URL上直接体现:GET http://www.xxx.com/get_user/01(不安全、繁琐、难维护等弊端),可以设计...原创 2019-11-29 11:49:51 · 222 阅读 · 0 评论 -
20. Django_ORM_修改数据和删除数据
这一节看一修改数据和和删除数据;修改数据:获取数据修改数据保存数据q = Projects.objects.get(tester="静啊3")q.leader= "leader3"q.save()删除数据获取数据删除数据保存数据q1 = Projects.objects.filter(leader="静静").last()q1.delete()Out[21]:...原创 2019-11-29 11:00:00 · 926 阅读 · 0 评论 -
18. Django_ORM_数据创建
class indexView(View): 'index主页类视图' def get(self,request): #创建模型类对象,还未执行sql语句 one_obj = Projects(name="项目哈哈",leader="测试经理",tester="静啊") #调用save方法进行保存 one_obj.sa...原创 2019-11-28 10:37:21 · 1188 阅读 · 0 评论 -
19. Django_ORM_数据查询
一、查询集QuerySet什么是查询集?查询集:从数据库查询得到的模型对象集合QuerySet,是一个列表什么是过滤器?过滤器:基于查询集得到的结果上进一步进行条件筛选过滤结果二、过滤器返回list/多个结果的过滤器values = model名称.objects.all():返回所有数据;返回查询集QuerySet对象。因为是列表,所以其结果可以使用values[索引].字段名获...原创 2019-11-28 11:26:52 · 217 阅读 · 0 评论 -
17.Django_使用admin站点管理
有时候我们需要后台添加数据可以使用到admin站点管理:Django能够根据定义的模型类自动地生成管理页面1. 创建超级管理员python manage.py createsuperuser根据提示输入:创建用户名、密码、邮箱运行项目,此时报错,Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。百度后发现是端口被占用,需要杀掉进程...原创 2019-11-27 17:32:01 · 169 阅读 · 0 评论 -
16.Django_ORM_外键
一、示例的表关系这里需注意表与表之间的主从表关系,因为外键字段需要在主表(“多”的表)1.对于助教来说,导师是从表2.对于学生来说,课程是从表3.对于课程来说,导师是从表PS.主从表的确定,需要从业务角度来确定。比如说如果这个系统是开发给老师用的,那么课程是主表;如果开发给学生用的,那么学生是主表。对于我们来说项目和接口实际是主从关系,有关联,即项目是接口的主键,一对多;新建I...原创 2019-11-26 18:03:40 · 111 阅读 · 0 评论 -
15.Django_ORM_创建数据库模型类、常用字段属性和选项
模型类的字段属性和选项模型类属性命名限制不可以是python的保留关键字不可用使用连续的_,因为django的查询方式不支持定义属性的时候,需要指定字段的类型,可通过字段类型的事参数来制定选项,语法:属性名 = models.字段类型(必参、选项)a、 单个模型时、常用的字段1.自增长字段xx = models.AutoField() # 自增长xx = models.Bi...原创 2019-11-25 18:23:14 · 247 阅读 · 0 评论 -
14.Django__ORM_创建数据库模型类
一.修改django的默认数据库引擎连接数据库settings.pyDATABASES = { 'default': { # 指定引擎 'ENGINE': 'django.db.backends.mysql', 'NAME': 'djangoSql', #数据库名称 'USER':'root',#数据库用户名 ...原创 2019-11-25 17:56:44 · 177 阅读 · 0 评论 -
13.Django_ORM模型介绍
什么是ORM模型ORM/Object Relational Mapping/对象关系映射ORM模式的作用是在关系型数据库与代码的业务实体对象之间,建立起一一映射的关系。这会让开发者不需要再去和复杂的sql语句打交道,只需要操作对象的属性、方法即可。ORM映射:类 ---- 表类的实例 ---- 表的记录类的属性 ---- 表的字段映射关系图:OMR的优势可移植性在Dja...原创 2019-11-25 16:30:54 · 179 阅读 · 0 评论 -
12.Django_响应json内容
响应json内容响应字符串、响应模板都试过了,那么是否可以响应json数据呢?这时候就需要用到JsonResponseJsonResponse第一个参数默认必须为dict,如果不想如此,需要设置safe=false,则为return JsonResponse(value, safe = false)project1/views.py添加代码:from django.http imp...原创 2019-11-22 15:09:55 · 145 阅读 · 0 评论 -
11.Django_url转换器
在项目中,有时间需要前端传递特定类型的参数过来,比如说int。那么此时就需要用到Django内置的url转换器,它可以把传递过来的参数转换成指定的类型首先看下源码from django.urls import converters,进入converters类,可看到提供了5种可转换类型:DEFAULT_CONVERTERS = { 'int': IntConverter(), ...原创 2019-11-22 14:44:33 · 161 阅读 · 0 评论 -
10.Django_抛出404错误
四、抛出404错误如果访问的资源不存在的话,我们想抛出404错误,而不是暴露Django的错误信息。Django为我们提供了这样一个方法get_object_or_404():将一个Django模型作为第一个位置参数,后面可以跟上任意个数的关键字参数,如果对象不存在则弹出Http404错误。为什么我们使用辅助函数get_object_or_404()而不是自己捕获ObjectDoes...原创 2019-11-21 22:56:29 · 960 阅读 · 0 评论 -
9.Django_获取request参数_post请求
post请求,发送form表单发送post请求403,然后响应内容是:解决方法:1.到settings.py注释下面这行(不推荐)之前推荐过2.解决cookie没有csrf_token的问题给post请求断言,然后像get请求一样进行请求使用postman发送带form表单的post请求(form-data):用request.POST来获取form表单的内容,也可以使用...原创 2019-11-21 22:40:06 · 8057 阅读 · 0 评论 -
8.Django_获取request参数_get请求
post请求,发送form表单发送post请求403,然后响应内容是:解决方法:1.到settings.py注释下面这行(不推荐)之前推荐过2.解决cookie没有csrf_token的问题给post请求断言,然后像get请求一样进行请求使用postman发送带form表单的post请求(form-data):用request.POST来获取form表单的内容,也可以使用...原创 2019-11-21 22:32:34 · 2443 阅读 · 0 评论 -
7.Django_template_render函数
一、模板什么是模板?在MVT模式中,T/Template就是模板,负责封装和生成要返回的html。例子:创建一个模板html,浏览器请求url,则返回该html返回到浏览器1.在templates创建sayhello.html文件<!DOCTYPE html><html lang="en"><head> <meta charset="...原创 2019-11-21 18:48:14 · 918 阅读 · 0 评论 -
6.Django_view视图
Django的View:一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,大家约定...原创 2019-11-20 18:42:34 · 107 阅读 · 0 评论 -
5.Django_urls路由配置文件解析
再看一下我们之前的urls.py文件from django.contrib import adminfrom django.urls import path,includeurlpatterns = [ path('admin/', admin.site.urls), # 进入localhost:8000/admin会进入Django的admin管理页面 path('po...原创 2019-11-19 18:18:10 · 466 阅读 · 0 评论 -
4.Django_创建第一个应用
在Django中,每个应用对应一个Python包,并且遵循同样的约定。Django自带一个工具,可以帮助我们自动生成Django应用的基础目录结构,十分方便。项目和应用的区别应用:是一个专门做某件事情的网站应用程序,比如博客系统,或者公共记录的数据库,或者简单的投票程序。项目:是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。现在要创建的应用,会创建在和D...原创 2019-11-19 18:05:46 · 155 阅读 · 0 评论 -
3.Django_安装和创建项目
一、安装官网下载安装包https://media.djangoproject.com/releases/2.2/Django-2.2.5.tar.gz;pip下载命令:pip isntall Django坑位:出现WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)...原创 2019-11-19 17:19:23 · 134 阅读 · 0 评论 -
2.Django_MVC模式和MVT模式
MVC模式和MVT模式解耦1.解耦:不同的代码块之间降低耦合,增强代码的可扩展性和可移植性,以提高向后兼容2.向后兼容:代码更新迭代3.不管是MVC模式还是MVT模式,它们的目的都是为了使代码解耦。MVC设计模式体现:Java常用MVC模式,比如SpringMVCMVC各部分的解释1.M/Model(模型)主要封装对数据层的操作,对数据库的数据进行增删改查操作2.V/View(...原创 2019-11-19 17:01:15 · 257 阅读 · 0 评论 -
1.Django简介
一. 简介:为什么使用框架进行开发:站在巨人的肩膀上提升开发效率只关注业务逻辑的实现,不用关注底层二 . Django vs Flask特点:提供创建项目工程自动化工具数据库ORM支持模板表单Admin管理站点文件管理认证权限session机制缓存创建工程:...原创 2019-11-19 16:34:47 · 98 阅读 · 0 评论