
Django开发系列
文章平均质量分 74
Python web开发,采用Django作为开发框架
zsddragon
这个作者很懒,什么都没留下…
展开
-
django开发系列:表单
django开发系列:表单之Form使用Django中的表单Django中的表单丰富了传统的HTML语言中的表单。在Django中的表单,主要做以下两件事:渲染表单模板。(不常用,容易前后端耦合)表单验证数据是否合法。Django中表单使用流程在一个app中新建一个forms.py,定义一个表单类,继承自django.forms.Form。Field字段名称在html中对应的是&...原创 2019-11-29 21:36:55 · 192 阅读 · 0 评论 -
django开发系列:视图高级之类视图
django开发系列:视图高级之类视图类视图在写视图的时候,Django除了使用函数作为视图,也可以使用类作为视图。使用类视图可以使用类的一些特性,比如继承等。View:django.views.generic.View是主要的类视图。所有的类视图都是继承于他。如果写自己的类视图,也可以继承于他。然后再根据当前请求的method,来实现不同的方法。比如这个视图只能使用get的方式来请求...原创 2019-11-25 08:27:12 · 231 阅读 · 0 评论 -
django开发系列:视图高级之CSV文件
django开发系列:视图高级之CSV文件生成CSV文件有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来。生成小的CSV文件用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去。import csvfrom django.http import HttpResponsedef csv_v...原创 2019-11-24 15:57:48 · 334 阅读 · 0 评论 -
django开发系列:视图高级之JsonResponse用法
django开发系列:视图高级之JsonResponse用法JsonResponse用来对象dumps成json字符串,然后返回将json字符串封装成Response对象返回给浏览器。并且他的Content-Type是application/json。from django.http import JsonResponsedef index(request): return Jso...原创 2019-11-24 15:42:23 · 1175 阅读 · 0 评论 -
django开发系列:视图高级之HttpResponse对象
django开发系列:视图高级之HttpResponse对象HttpResponse对象Django服务器接收到客户端发送过来的请求后,会将提交上来的这些数据封装成一个HttpRequest对象传给视图函数。那么视图函数在处理完相关的逻辑后,也需要返回一个响应给浏览器。而这个响应,我们必须返回HttpResponseBase或者他的子类的对象。而HttpResponse则是HttpRespon...原创 2019-11-24 15:06:04 · 182 阅读 · 0 评论 -
django开发系列:视图高级之WSGIRequest对象和QueryDict对象
django开发系列:视图高级之WSGIRequest对象和QueryDict对象WSGIRequest对象Django在接收到http请求之后,会根据http请求携带的参数以及报文信息创建一个WSGIRequest对象,并且作为视图函数第一个参数传给视图函数。也就是我们经常看到的request参数。该类继承于HttpRequst在这个对象上我们可以找到客户端上传上来的所有信息。这个对象的完整...原创 2019-11-23 22:41:40 · 283 阅读 · 0 评论 -
django开发系列:视图高级之重定向
django开发系列:视图高级之重定向重定向分为永久性重定向和暂时性重定向,在页面上体现的操作就是浏览器会从一个页面自动跳转到另外一个页面。比如用户访问了一个需要权限的页面,但是该用户当前并没有登录,因此我们应该给他重定向到登录页面。永久性重定向:http的状态码是301,多用于旧网址被废弃了要转到一个新的网址确保用户的访问,最经典的就是京东网站,你输入www.jingdong.com的时候,...原创 2019-11-23 22:22:00 · 215 阅读 · 0 评论 -
django开发系列:视图高级之限制请求method装饰器
django开发系列:视图高级之限制请求装饰器常用的请求methodGET请求: 一般用来向服务器索取数据,但是不会向服务器提交数据,不会对服务器的状态进行更改。POST请求:一般是用来向 服务器提交数据,会对服务器的状态进行更改。限制请求装饰器Django内置的视图装饰器可以给视图提供一些限制。比如限制某个视图只能通过GET的method访问等。以下是一些常用的内置视图装饰器。dj...原创 2019-11-23 22:04:04 · 247 阅读 · 0 评论 -
django开发系列:ORM模型迁移
django开发系列:ORM之migration命令migrattion命令:python manage.py makemigrationspython manage.py migratemigrate怎么判断哪些迁移脚本需要执行:他会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本进行对比,如果发现数据库中,没有这个迁移脚本,那么就会执行这个迁移脚本。mi...原创 2019-11-23 17:16:00 · 769 阅读 · 0 评论 -
django开发系列:ORM之作业
django开发系列:ORM之作业模型:from django.db import modelsclass Student(models.Model): name = models.CharField(max_length=100) gender = models.SmallIntegerField() class Meta: db_table =...原创 2019-11-23 17:10:27 · 141 阅读 · 0 评论 -
django开发系列:ORM查询练习
django开发系列:ORM之作业讲解ORM作业准备和讲解:from django.db import modelsclass Student(models.Model): """学生表""" name = models.CharField(max_length=100) gender = models.SmallIntegerField() class Met...原创 2019-11-23 16:57:05 · 222 阅读 · 0 评论 -
django开发系列:ORM之QuerySet什么时候转换为SQL执行
django开发系列:ORM之QuerySet什么时候转换为SQL执行生成一个QuerySet对象并不会马上转换为SQL语句去执行。比如我们获取Book表下所有的图书:books = Book.objects.all()print(connection.queries)打印的是一个空的列表,说明上面的QuerySet并没有真正的执行sql语句在以下情况下QuerySet会被转换为SQ...原创 2019-11-23 16:41:39 · 689 阅读 · 0 评论 -
django开发系列:ORM之QuerySet API
django开发系列:ORM之QuerySet API准备工作:新建一个项目,在项目中新家一个app,名字自取。将app添加值settings.py中,然后配置settings连接数据库。在app中的models中新建模型:from django.db import models# Create your models here.class Author(models.Model):...原创 2019-11-23 10:41:03 · 171 阅读 · 0 评论 -
django开发系列:QuerySet之objects对象
django开发系列:QuerySet之objects对象模型.objects:这个对象是django.db.models.manager.Manager的对象,这个类是一个空壳类,他上面的所有方法都是从QuerySet这个类上面拷贝过来的。因此我们只要学会了QuerySet,这个objects也就知道该如何使用了。Manager源码解析:class_name = "BaseManager...原创 2019-11-22 22:02:31 · 364 阅读 · 0 评论 -
django开发系列:ORM之聚合函数
django开发系列:ORM之聚合函数聚合函数:所有的聚合函数都是放在django.db.models下面。聚合函数不能够单独的执行,需要放在一些可以执行聚合函数的方法下面中去执行。比如aggregate。示例代码如下:result = Book.objects.aggregate(Avg("price"))聚合函数执行完成后,给这个聚合函数的值取个名字。取名字的规则,默认...原创 2019-11-21 21:32:00 · 338 阅读 · 0 评论 -
django开发系列:ORM查询条件详解
django开发系列:ORM查询条件详解查询条件:exact:在底层会被翻译成=。iexact:在底层会被翻译成LIKE。LIKE和=:大部分情况下都是等价的,只有少数情况下是不等价的。exict和iexact:他们的区别其实就是LIKE和=的区别,因为exact会被翻译成=,而iexact会被翻译成LIKE。因为field__exact=xxx其实等价于filed=xxx,...原创 2019-11-21 11:10:51 · 564 阅读 · 0 评论 -
django开发系列:ORM表关系
django开发系列:ORM表关系表关系笔记:一对多:应用场景:比如文章和作者之间的关系。一个文章只能由一个作者编写,但是一个作者可以写多篇文章。文章和作者之间的关系就是典型的多对一的关系。实现方式:一对多或者多对一,都是通过ForeignKey来实现的。还是以文章和作者的案例进行讲解。class User(models.Model): username = models.C...原创 2019-11-21 09:41:19 · 122 阅读 · 0 评论 -
django开发系列:ORM数据库外键使用详解
django开发系列:ORM数据库外键使用详解外键删除操作:如果一个模型使用了外键,那么在对方那个模型被删除后,该进行什么样的操作,可以通过on_delete来指定,可以指定的类型如下:CASCADE:...原创 2019-11-21 08:48:01 · 1078 阅读 · 0 评论 -
django开发系列:ORM常用Field
django开发系列:ORM常用Fieldnavie时间和aware时间:什么是navie时间?什么是aware时间?navie时间:不知道自己的时间表示的是哪个时区的。也就是不知道自己几斤几两。比较幼稚。aware时间:知道自己的时间表示的是哪个时区的。也就是比较清醒。pytz库:专门用来处理时区的库。这个库会经常更新一些时区的数据,不需要我们担心。并且这个库在安装Django的...原创 2019-11-20 20:34:02 · 337 阅读 · 0 评论 -
django开发系列:ORM对数据库的基本操作
django开发系列:ORM对数据库的基本操作添加数据:只要使用ORM模型创建一个对象。然后再调用这个ORM模型的save方法就可以保存了。示例代码如下:book = Book(name='西游记',author='吴承恩',price=100)book.save()查找数据:所有的查找工作都是使用模型上的objects属性来完成的。当然也可以自定义查询对象。这部分功能会在后面讲到...原创 2019-11-20 20:29:10 · 150 阅读 · 0 评论 -
django开发系列:mysql数据库操作
django开发系列:mysql数据库操作mysql数据库常用驱动方式:MySQL-python:mysqlclient:pymysql:MySQL Connector/Pythonsettings.py配置:DATABASES = { 'default': { # 数据库引擎(sqlite3/mysql/oracle等) 'ENGINE'...原创 2019-11-20 16:46:35 · 123 阅读 · 0 评论 -
django开发系列:ORM模型的创建和映射
django开发系列:ORM模型的创建和映射创建ORM模型:ORM模型一般都是放在app的models.py文件中。每个app都可以拥有自己的模型。并且如果这个模型想要映射到数据库中,那么这个app必须要放在settings.py的INSTALLED_APP中进行安装。以下是写一个简单的书籍ORM模型。示例代码如下:from django.db import modelsclass Boo...原创 2019-11-20 13:15:53 · 284 阅读 · 0 评论 -
django开发系列:加载静态文件
django开发系列:加载静态文件加载静态文件:在一个网页中,不仅仅只有一个html骨架,还需要css样式文件,js执行文件以及一些图片等。因此在DTL中加载静态文件是一个必须要解决的问题。在DTL中,使用static标签来加载静态文件。要使用static标签,首先需要{% load static %}。加载静态文件的步骤如下:首先确保django.contrib.staticfiles...原创 2019-11-19 22:46:48 · 171 阅读 · 0 评论 -
django开发系列:模板结构优化
django开发系列:模板结构优化include方法:有些模版代码是重复的。因此可以单独抽取出来,以后哪里需要用到,就直接使用include进来就可以了。如果想要在include子模版的时候,传递一些参数,那么可以使用with xxx=xxx的形式。示例代码如下:{% include 'header.html' with username='zhiliao' %}模版继承:在前端...原创 2019-11-19 21:10:33 · 132 阅读 · 0 评论 -
django开发系列:自定义过滤器
django开发系列:自定义过滤器自定义过滤器:首先在某个app中,创建一个python包,叫做templatetags,注意,这个包的名字必须为templatetags,不然就找不到。在这个templatetags包下面,创建一个python文件用来存储过滤器。在新建的python文件中,定义过滤器(也就是函数),这个函数的第一个参数永远是被过滤的那个值,并且如果在使用过滤器的时候传递...原创 2019-11-19 18:42:27 · 128 阅读 · 0 评论 -
django开发系列:DTL常用过滤器
django开发系列:DTL常用过滤器为什么需要过滤器?因为在DTL中,不支持函数的调用形式(),因此不能给函数传递参数,这将有很大的局限性。而过滤器其实就是一个函数,可以对需要处理的参数进行处理,并且还可以额外接收一个参数(也就是说,最多只能有2个参数)。add过滤器:将传进来的参数添加到原来的值上面。这个过滤器会尝试将值和参数转换成整形然后进行相加。如果转换成整形过程中失败了,那么会将...原创 2019-11-16 22:40:52 · 180 阅读 · 0 评论 -
django开发系列:常用模板标签
django开发系列:常用模板标签if语句:所有的标签都是在{%%}之间。if标签有闭合标签。就是{% endif %}。if标签的判断运算符,就跟python中的判断运算符是一样的。==、!=、<、<=、>、>=、in、not in、is、is not这些都可以使用。还可以使用elif以及else等标签。views.py代码:from django.sh...原创 2019-11-15 10:29:56 · 153 阅读 · 0 评论 -
django开发系列:模板介绍
django开发系列:模板介绍模版介绍笔记:在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的HTML代码,这可以让浏览器渲染出非常漂亮的页面。目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言。当然也可以配置D...原创 2019-11-15 09:04:04 · 203 阅读 · 0 评论 -
django开发系列:url默认参数
django开发系列:url默认参数URL映射的时候指定默认参数:使用path或者是re_path的后,在route中都可以包含参数,而有时候想指定默认的参数,这时候可以通过以下方式来完成。示例代码如下:from django.urls import pathfrom . import viewsurlpatterns = [ path('blog/', views.page...原创 2019-11-15 08:25:21 · 563 阅读 · 0 评论 -
django开发系列:自定义URL转换器
django开发系列:自定义URL转换器自定义URL(PATH)转换器笔记:需求:实现一个获取文章列表的demo,用户可以根据/articles/文章分类/的方式来获取文章。其中文章分类采用的是分类1+分类2+分类3...的方式拼接的,并且如果只有一个分类,那就不需要加号。示例如下:# 1. 第一种:获取python分类下的文章/articles/python/# 2. 第二种:获取p...原创 2019-11-14 22:57:49 · 152 阅读 · 0 评论 -
django开发系列:re_path
django开发系列:re_pathre_path笔记:re_path和path的作用都是一样的。只不过re_path是在写url的时候可以用正则表达式,功能更加强大。写正则表达式都推荐使用原生字符串。也就是以r开头的字符串。在正则表达式中定义变量,需要使用圆括号括起来。这个参数是有名字的,那么需要使用?P<参数的名字>。然后在后面添加正则表达式的规则。示例代码如下:from...原创 2019-11-14 22:11:16 · 273 阅读 · 0 评论 -
django开发系列:url命名与反转
django开发系列:url命名与反转url命名:为什么需要url命名?因为url是经常变化的。如果在代码中写死可能会经常改代码。给url取个名字,以后使用url的时候就使用他的名字进行反转就可以了,就不需要写死url了。如何给一个url指定名称?在path函数中,传递一个name参数就可以指定。示例代码如下:urlpatterns = [ path('',views.inde...原创 2019-11-14 19:18:05 · 152 阅读 · 0 评论 -
django开发系列:url模块化
django开发系列:url模块化urls模块化:如果项目变得越来越大。那么url会变得越来越多。如果都放在主urls.py文件中,那么将不太好管理。因此我们可以将每个app自己的urls放到自己的app中进行管理。一般我们会在app中新建一个urls.py文件用来存储所有和这个app相关的子url。需要注意的地方:应该使用include函数包含子urls.py,并且这个urls.py的...原创 2019-11-14 10:55:21 · 267 阅读 · 0 评论 -
django开发系列:url映射
django开发系列:url映射url映射:为什么会去urls.py文件中寻找映射呢?是因为在settings.py文件中配置了ROOT_URLCONF为urls.py。所有django会去urls.py中寻找。在urls.py中我们所有的映射,都应该放在urlpatterns这个变量中。所有的映射不是随便写的,而是使用path函数或者是re_path函数进行包装的。url传参数:...原创 2019-11-14 09:27:35 · 295 阅读 · 0 评论 -
django开发系列:视图基础
django开发系列:视图基础视图函数:视图函数的第一个参数必须是request。这个参数绝对不能少。视图函数的返回值必须是django.http.response.HttpResponseBase的子类的对象。from django.shortcuts import renderfrom django.http import HttpResponsedef book(reque...原创 2019-11-14 09:01:48 · 172 阅读 · 0 评论 -
django开发系列:第一个django项目
python基础系列:第一个django项目两种方式:命令行方式pycharm方式命令行方式:创建项目:django-admin startproject firstproject进入项目文件夹:cd firstproject运行:python manage.py runserver浏览器打开http://127.0.0.1:8000/,成功!pycharm方式:...原创 2019-11-13 22:18:53 · 144 阅读 · 0 评论 -
django开发系列:python安装和多版本管理
python基础系列:python安装和多版本管理通过相关资讯,本人十分看好python的前景,准备今后开发都采用python,开发方向有:web全栈、数据挖掘和分析、机器学习、深度学习。预计会用到很多的python版本,因此这里先明确一个版本管理的方法,首先本人已经熟练anaconda,因此主的python采用anaconda进行安装,版本:Anaconda3-2019.10-Windows...原创 2019-11-13 16:09:57 · 356 阅读 · 0 评论