后端——Django框架
文章平均质量分 84
龙王.*?
向来心是看客心,奈何人是剧中人。
展开
-
Django出现‘No changes detected’报错的解决办法
今天暴力的把所有迁移文件和数据库的表删除,想重新迁移生成表。当第一次执行python manage.py makemigrations时,只是生成了django系统自带的一些数据表的迁移文件,而apps下的modle却没有生成迁移文件。...原创 2020-03-27 19:03:12 · 10513 阅读 · 3 评论 -
Django2.0——根据已有表反向生成模型
假如你一个Django项目需要连接一个现成的数据库表,表少还好,表多或字段多的话,你还需要为每一个表手写模型,过程繁琐,还不一定能写对。Django的manage文件提供了反向生成模型的方法。首先在setting文件配置好Mysql数据库,再安装pymysql,在__init__文件内加入下面代码:import pymysqlpymysql.install_as_MySQLdb()...原创 2020-03-25 20:31:10 · 476 阅读 · 0 评论 -
Django2.1将LANGUAGE_CODE和TIME_ZONE设置为中国区域
Django默认配置是:TIME_ZONE = 'UTC'LANGUAGE_CODE = 'en-us'Django1.9以前应设置为:TIME_ZONE = 'Asia/Shanghai'LANGUAGE_CODE = 'zh-cn'Django1.9以后至目前的2.1,应设置为:LANGUAGE_CODE = 'zh-hans'TIME_ZONE = 'As...原创 2019-03-03 16:09:04 · 8566 阅读 · 1 评论 -
Django2.0——admin基础介绍
官方文档参考Django的强大之处之一就是提供了便利的后台站点,在我们刚开始创建这个项目时,他就将这些配置好了。如果你在创建项目时,没有选择默认的项目模板,你就需要手动做如下操作。添加django.contrib.admin 和它的依赖django.contrib.auth、django.contrib.contenttypes、django.contrib.messages、djang...翻译 2019-03-15 18:53:05 · 400 阅读 · 0 评论 -
Django2.0——上下文处理器
官方文档参考在settings文件的模板配置中,有着context_processors属性,他的中文翻译叫上下文处理器。这个上下文处理器与视图函数的context类似。他的目的都是给模板传递值,但与context不同的是,context_processors是给所有的模板都同时传值,相当于给每个视图的context字典中都添加了指定的值。context_processors属性值是一个列表,...翻译 2019-03-15 21:42:47 · 372 阅读 · 0 评论 -
Django2.0——权限系统Auth
Django默认提供了用户权限管理模块auth,在我们第一次数据库迁移时,他就自动帮我们在数据库中创建三张表:官方文档参考user表,User是auth模块中维护用户信息的表,在数据库中该表被命名为auth_user. 该表继承自Abstractuser. group表,定义用户组模型,该表只包含一个name字段和一个permissions(权限)多对多关系字段,在数据库中被...翻译 2019-03-16 15:39:28 · 1657 阅读 · 1 评论 -
Django2.1——内置分页器
官方文档参考Python提供了内置分页类,里面封装了一些属性和方法,大大简化了我们自定义的时间和精力,这个类位于django/core/paginator.py。 首先导包: from django.core.paginator import Paginator 例子: >>> from django.core.paginator import P...翻译 2019-03-12 13:12:50 · 657 阅读 · 0 评论 -
Django2.1——模型表单
官方文档参考初识从model中创建一个form不需要像前面那么麻烦,一个一个字段去定义。如下所示:>>> from django.forms import ModelForm>>> from myapp.models import Article# Create the form class.>>> class Artic...翻译 2019-03-13 20:57:08 · 761 阅读 · 0 评论 -
Django-haystack对接elasticsearch
如果直接在Django项目直接编写代码作为ElasticSearch的客户端,比较复杂,所以借助第三方包Haystack来对接ELasticSearch的客户端。而且使用了Haystack后,以后你换其他的全文搜索服务器时,也不用修改Django项目已经写好的代码。elasticsearch工作原理前期准备安装elasticsearch,参考https://blog.csdn.ne...原创 2019-05-02 19:35:56 · 2122 阅读 · 1 评论 -
django——三种方式实现文件下载
在实际的项目中很多时候需要用到下载功能,如导excel、pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载。这里我们将下载的文件存放在项目media目录下,当然在实际中并不会这样做。方式一:使用HttpResponseimport osfrom django.http import HttpRespo...翻译 2019-05-04 18:33:12 · 5266 阅读 · 2 评论 -
Django2.1模型——Meta
通过一个内嵌类“class Meta”给你的model定义元数据,可以给模型添加其他的一些信息。这些选项都是非必须的,下面是所有可能用到的 Meta 选项。 app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包下的models.py文件中,这时候你需要指定你这个模型类是那个应用程序的。比如你在其他地方写了一个模型类,而这个模型类是属于mya...转载 2019-04-20 16:41:33 · 219 阅读 · 0 评论 -
Django——模型的一些优化
select_related()该方法用于关联的多表查询,在数据库有外键的时候,使用select_related()可以很好的减少数据库请求的次数,从而提高性能。该方法类似于sql的INNER JOIN。对于一对一字段(OneToOneField)和外键字段(ForeignKey),可以使用select_related()来对QuerySet进行优化.在对QuerySet使用sele...原创 2019-05-13 17:46:19 · 376 阅读 · 0 评论 -
Django搭建七牛云实现图片存储
图片的存储除了上次搭建的fastdfs分布系统可用,还可以借助七牛云这个平台。我们进入七牛云并实名认证后,他就会每月免费提供10G的存储空间,供开发这测试使用。下面讲解下如何使用js、python来实现在七牛云上的图片存储。可以参考文档SDK。一、获取关键参数获取AK、SK在七牛云平台实名认证后,我们需要进入个人中心,点击密钥管理,并将AK和SK这两个值复制保存好,因为在后面djan...翻译 2019-05-19 11:49:33 · 2082 阅读 · 0 评论 -
Django搭建强大好用的文本编辑器
简介Editor.md是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。需要的小伙伴可在GitHub上下载使用(https://github.com/pandao/editor.md/)。完整的demo也可以参考下面的地址:https://pandao.github.io/editor.md/examples/in...翻译 2019-05-20 23:04:55 · 3263 阅读 · 0 评论 -
分页自定义
效果图:后端分页实现原理:x表示当前页,y表示总页数,left_page_range表示当前页左边的页码范围。right_page_range表示当前页右边的页码范围。 当x<=7,left_page_range = (1,x),此时left_more_page = False。 当x>7,left_page_range = (x-3,x),此时le...翻译 2019-05-16 18:06:00 · 256 阅读 · 0 评论 -
Django搭建FastDFS分布式文件存储系统
前言django admin的ImageField默认会把文件存到settings.py配置的MEDIA_ROOT目录下,所以存储图片的数量受限于django服务器的硬盘大小。为了支持海量的图片存储,更易于拓展存储空间,使用FastDFS分布式存储系统。如果用户上传的文件重复(文件指纹一样),那么系统只有存储一份数据。环境:云服务器下的ubuntu16.04工具:docker ...原创 2019-05-17 16:08:12 · 1491 阅读 · 0 评论 -
Django2.1——自定义模板过滤器及标签详解
学习的过程总是会时不时觉得有点枯燥,虽然做笔记的过程中会让自己的知识架构变得更加清晰,但写的多也会觉得有点无聊,加上文采不是很好,无法将笔记写的深入,参照别人的方式,以后我会时不时的放些养眼的图,化解点枯燥。官方文档参考一、代码布局无论是模板标签还是过滤器,它们的本质还是一个python函数。在构造自定义的过滤器和标签中,首先我们要先了解它们的代码布局,即应该写在哪?代码的布局...原创 2019-03-02 19:59:39 · 589 阅读 · 1 评论 -
Django——CSRF防御
关于CSRF攻击原理在上一篇博客已经有过说明,这篇主要介绍下Django关于开启CSRF及CSRF工作机理。关于开启防御有两种,一种是全局开启,另一种是局部开启。全局:中间件 django.middleware.csrf.CsrfViewMiddleware局部:from django.views.decorators.csrf import csrf_exempt,csrf_prot...翻译 2019-01-28 12:54:52 · 447 阅读 · 0 评论 -
Django2.0——路由配置
URL配置就像是Django所支撑网站的目录,它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。URL需要在urls.py进行配置,与其对应的视图函数写在views.py文件中。url的配置写在urlpatterns列表的path方法中,对于path的功能,下面一一讲解。pathpath方法第一个参数是url路由的配置,还可以通过<xx>/将输入指定url后多...原创 2018-11-29 18:28:52 · 1326 阅读 · 0 评论 -
Django2.0——模板渲染(一)
在前面的介绍中我们都是用简单的 django.http.HttpResponse来把内容显示到网页上,本节将讲解如何使用渲染模板的方法来显示内容,即调用精美的HTML页面。模板的创建既可以在项目下创建一个templates目录来存放模板,也可以在app应用中新建一个templates文件夹来存放各个模板。模板配置要注意的是不管是以哪种方式创建,都要记得在settings中进行配置,不然在调...原创 2018-11-29 23:43:30 · 2370 阅读 · 0 评论 -
Django搭建后篇——启动服务器及创建视图
开启服务器,Django开启服务器的方式有两种,一种是在Ubuntu在开启,另一种是直接在pycharm开启。就方便而言肯定是第二种,但由于pycharm版本的问题,可能有的人无法直接在pycharm开启。故在此将两种方式都介绍下。在开启前,我们需要将项目下的settings文件修改下,如下图所示,将ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['*']。第...原创 2018-11-26 19:42:12 · 301 阅读 · 0 评论 -
Django模板渲染——(二)
模板标签模板是由HTML代码和一些逻辑控制代码组成的,逻辑控制代码除了前面介绍的变量和过滤器,还要一个非常重要的模板标签。模板标签的语法规则是{% tag %},模板标签在渲染的过程中能提供任意的逻辑关系,模板标签一般都有着与之对应的结束标签,其标签名为在原来的标签名前加上end。下面介绍下一些常用的模板标签。{% if/elif/else %}条件标签用于判断,可以使用and,or,n...原创 2018-12-01 02:29:14 · 699 阅读 · 0 评论 -
Django2.0模型基础——(一)
Django模型封装python操作数据库的代码,让我们可以更加方便的执行SQL语句。每个创建的app下都会有一个叫models.py的文件,在这个文件下创建的模型类映射于数据库的表名,类属性映射于数据库的字段。下面介绍下MySQL在django下的有关配置和操作。官方文档参考模型配置配置数据库:先进入数据库,创建一个库名,我创建了一个叫mydb,然后在setting.py文件中进行配...原创 2018-12-02 23:04:26 · 242 阅读 · 0 评论 -
Django模型基础(三)——关系表的数据操作
模型之间可以有三种表关系,即一对一,一对多和多对多。表关联之间的数据操作在Django中可以很方便的操作到。在模型中,表关联的字段类型是关联表的实例,而不是字段本身类型。关联字段在数据库中会在其后补上_id,这才是关联字段本身的类型。这句话听起来很绕,下面具体来看看。下面是学生和学院的表模板。class Student(models.Model):#学生表 s_id = mode...原创 2018-12-08 01:49:44 · 669 阅读 · 0 评论 -
Django模型基础——(二)
上篇博客主要讲了django中对数据库的增删改查,下面深入再讲解下对数据库的操作。常用的查询方法下面以表名为User为例User.object.first() :返回表中第一条数据 User.object.last():返回表中的最后一条数据 User.object.get():指定条件,返回满足条件的唯一一条数据first、last、get方法得到的都是一条数据,返回的是一个模...原创 2018-12-03 23:57:27 · 293 阅读 · 0 评论 -
Django2.0——Form组件简单总结
官方文档参考表单初见Django提供了一个Form组件来配和前端的表单进行使用,Form有两个强大的功能,分别是生成HTML代码和验证数据的合法性。通常我们不会用其第一个功能,因为前端的设计可以做出更加精美且多样的表单页面,为什么要用python呢?而另一个验证功能是经常会在view中使用到的。这个组件所在库为django.forms。我们一般会在app下创建一个form.py的文件来...原创 2018-12-14 20:58:41 · 417 阅读 · 0 评论 -
Django2.0——实现简易登陆、注册
思路:实现简易的登陆、注册,我们至少需要三个HTML页面,一个主页面、一个登陆界面、一个注册界面。为了存储和校验用户的账号和密码,我们需要写一个模型类(用于映射到数据库)、两个form类(一个登陆、一个注册,用户校验前端传来的数据是否合法)、视图函数、url配置。出于安全考虑,我们还要将密码进行加密再存储到数据库,这里用的hash加密,django已封装好了这个库,位于django.contr...原创 2018-12-15 01:04:22 · 616 阅读 · 0 评论 -
Django2.0——中间件
官方文档参考Django中间件middleware本质是一个类,在请求到返回的中间,类中不同的方法会在指定的时机中被触发。setting.py的变量MIDDLEWARE_CLASSES中的每一个元素都是中间件,且这些注册的中间件之间,有着严格的执行顺序。在request到url层之间,中间件的执行顺序是从上而下,依次执行。在response到浏览器之间,中间的执行顺序变成从下至上。通常...翻译 2018-12-15 23:04:48 · 955 阅读 · 0 评论 -
Django2.0——请求与响应(上)
客户端与服务段通过http协议进行数据的传输,而http协议是一种双向单工的,且主动发起连接的只有客户端。故数据的传送就离不开请求和响应,客户端每发起一个请求,服务端就是返回一个响应。在django的视图函数中的第一个参数就是request,即每一个request都对应着一个视图函数来给这个请求返回响应,返回响应的方式就是通过return来返回一个HttpRespons方法。下面就请求和响应两个方...原创 2018-12-11 16:01:36 · 449 阅读 · 0 评论 -
Django2.0——请求与响应(下)
官方文档参考上篇讲完了请求,这篇接着讲下响应,django响应类型大致有以下几种HttpResponse:返回简单的字符串 render:渲染模板 redirect:重定向 JsonResponse:返回json数据 HttpResponse子类:如HttpResponseNotFound,它会返回一个404状态的页面。HttpResponse使用django.http.Ht...原创 2018-12-12 13:42:22 · 648 阅读 · 0 评论 -
settings配置数据库和日志
数据库的配置:一.mysql配置pip下载pymysql,用于mysql和django的连接。 在init.py上配置pymsqy。import pymysqlpymysql.install_as_MySQLdb()在setting文件配置mysql,为了信息不被暴露,我们将信息写在另一个文件中,在OPTIONS上写入这个文件路径即可。[client]database ...原创 2019-01-19 15:59:28 · 774 阅读 · 0 评论 -
注册模块——图片验证码的实现
在注册上,我们一般都是以手机号的验证码短信来进行。为了防止有人恶意利用别人的手机来进行骚扰或redis缓存的破坏,我们都要在验证手机短信前加入图片验证码的验证。只有通过图片验证码的验证,才能允许收到手机短信验证。下面讲讲这一api的实现。后端实现流程如下:创建类视图,写入get方法。 从前端获取uuid。(uuid用于唯一标识一张图片) 类视图的get方法内生成一张验证码图片及对应的文...原创 2019-01-19 18:06:12 · 785 阅读 · 0 评论 -
form——验证器Validators
form表单最大的作用就是验证功能了,通过cleaned_data清洗,我们可以获取传来的值,通过参数、验证器、自定义验证方法,我们可以做到很多的验证。验证器可用于在不同类型的字段之间重用验证逻辑。validators有自带的验证器,也可以自己定义一个验证器。在验证某个字段的时候,可以传递一个validators参数用来指定验证器,进一步对数据进行过滤。验证器有很多,但是很多验证器其实已经通过...原创 2019-01-22 12:23:02 · 2366 阅读 · 0 评论 -
CSRF攻击原理
CSRF是什么呢?CSRF全名是Cross-site request forgery,是一种对网站的恶意利用,CSRF比XSS更具危险性。想要深入理解CSRF的攻击特性我们有必要了解一下网站session的工作原理。 session我想大家都不陌生,无论你用.net或PHP开发过网站的都肯定用过session对象,然而session它是如何工作的呢?如果你不清楚请往下看。 先问个小问题:如果...转载 2019-01-28 10:56:02 · 237 阅读 · 0 评论 -
ubuntu下Django的搭建
工具:Window下的pycharm 、VirtualBox下的Ubuntu系统、非必需的Xshell(远程连接工具)现在针对各种包或python版本不能共存或包不能很好下载的问题,开始流行使用虚拟环境来解决这个问题,所有第一步我们要在Ubuntu下新建一个虚拟环境,当然不新建虚拟环境也是可以的。Linux下输入workon查看已有的虚拟环境,我的已有两个,分别是envpy2和py3env...原创 2018-11-26 00:03:46 · 2494 阅读 · 1 评论