Django
孜孜孜孜不倦
学无止境!一步步向目标前进!
展开
-
使用Django rest framework 编写restful接口(根据之前电商项目为例)
使用 Django restframework框架 编写API接口一、在搭建rest framework接口之前我们先了解一下什么是API接口:API是应用程序编程接口,他是软件系统不同组成部分衔接的约定。可以理解为预先定义的函数。设计目的在于可以提供应用程序得以访问某些特定软件或硬件的能力,而又无需获知这些软硬件源码,也无需理解他们的内部工作机制细节。API通常是以http的形式提供,它隐...翻译 2019-08-03 16:24:39 · 1674 阅读 · 1 评论 -
Django邮件和短信发送脚本测试
Python 邮件发送:Python发送邮件是有内置邮件发送模块,采用smtp(由描述源地址到目的地址的轻量级邮件协议)协议进行邮件发送,smtp协议在开发过程当中被分为2种:1、smtp/imap 用来发送邮件2、Smtp/pop3 用来接收邮件常见的 163、qq、网易、新浪、等邮箱都有提供的smpt服务器。开启163或腾讯邮箱发送邮件服务,生成授权码163邮箱服务器地址和端口:...原创 2019-08-03 18:34:35 · 821 阅读 · 0 评论 -
Django 使用celery框架实现异步任务
一、Django 异步编程在之前的开发过程当中,django都是使用单线程结构,比如,请求一个视图,视图向数据库写入30000条数据,那么整个页面进入等待状态,类似的需求是有的,但是用户体验不可以是这样:比如,发短信比如,django调用爬虫比如,大规模数据写入异步编程的底层可以用多线程实现,但是在开发当前有一个很成熟的异步编程框架加载 celery,我们要是用的是django封装好...原创 2019-08-03 19:02:03 · 972 阅读 · 1 评论 -
Django celery定时任务
celery 定时任务电商项目有这样的需求,每天中午12点进行秒杀活动,对于有过预约的用户,在11:50进行短信提醒。最初接触定时任务是在Linux系统的计划任务部分。Celery已经提供了这样的一种功能。Django celery常用的定时方法crontabcrontab(hour=”*/2”) 每2小时执行一次crontab(minute=0,hour=”*/3”) 每3个小时的...转载 2019-08-03 19:11:07 · 504 阅读 · 2 评论 -
Django 中间件概述
Django中间件之前的Django电商项目中,使用装饰器实现登陆校验,但是实际上有很多功能是需要所有页面都执行的,比如权限,当不同的用户访问同一个页面,根据权限不同返回的数据也应该不同。首先 可以通过数据库查询限制返回的结果,这样的限制并不能完全对信息进行限制。在settings当中有这样的一个配置中间件:是用来处理Django请求的框架级别的钩子,他是一个轻量级的,低级别的插 件系统,...原创 2019-08-03 19:36:02 · 897 阅读 · 0 评论 -
Django 中的settings常用配置
发表此文章仅是为了今后使用到相关技术需要时,能够及时找到相关的全局配置参数,提高一些工作效率。当然广大读者们如果自信可以手写出来或者当需要时问度娘,又或者单独备份一个文档都是可以的。settings全局路径(相当于环境变量),表示Django项目根路径:BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(file)))debu...原创 2019-08-04 17:11:12 · 1534 阅读 · 0 评论 -
Django搭建电商网站之电商项目开始与建模_后台注册登录退出(一)
Django电商项目一般电商网站的主要对象间的关系及流程图根据此流程图进行项目功能的划分:电商项目我们划分为两个部分:前台消费的部分,负责展示,出售商品后台管理部分,负责商品上架,下架管理项目被分为2个部分,一部分是前台(Buyer),一部分是后台(Store)数据库建模进行版本迭代的建模首先进行后台的开发卖家:字段说明username用户名...原创 2019-07-26 22:10:03 · 671 阅读 · 0 评论 -
Django搭建电商网站之店铺与商品_店铺校验及商品上下架销毁(三)
基于上一篇博客继续跟进:Django搭建电商网站之店铺与商品_店铺注册与商品管理(二)一、添加校验用户是否有店铺的功能1、在用户登录时下发校验店铺的cookie在用户登陆校验完成之后校验用户是否拥有店铺通过校验cookie来证明用户是否拥有店铺如果店铺存在,则设置cookie is_store为店铺id如果店铺不存在,则设置cookie为空(这里设置为空是因为前端获取cookie时不...原创 2019-07-27 16:09:52 · 800 阅读 · 0 评论 -
Django搭建电商网站之前台应用搭建_支付宝沙箱环境支付及应用(四)
基于上一篇博客继续跟进:Django搭建电商网站之前台应用搭建_前台建模及商品类型bootstrap模态框应用(三)一、支付宝沙箱环境部署并测试1、打开支付宝开发平台地址并扫码登录https://open.alipay.com/platform/home.htm2、确定入驻身份填写信息,完成入驻3、进入开发中心,开发阶段先用沙箱环境进行测试4、进入沙箱环境,查看沙箱应用5、下...转载 2019-07-27 20:02:31 · 1532 阅读 · 0 评论 -
Django优化之缓存技术使用
Django 缓存系统 网站访问效率优化的一大方法,缓存(cache)。缓存针对动态网站起作用居多,动态网站的数据来源于数据库或者其他的存储容器。当请求页面的时候,我们需要首先查询数据,让后动态的渲染数据,当数据量大并且访问频繁的时候,容易导致响应效率变第,服务器压力变大。 所以,在第一次访问,就将数据库查询的数据先放到一个地方,这个地方可以是内存,数据库,本地当中,然后,之后访问同样的数...转载 2019-08-05 19:00:34 · 210 阅读 · 0 评论 -
(十九)Django中cookie和session用法
一、cookie和session基础简介 由于http请求是无状态的,无法记录用户的身份,所以需要有一种机制来长期的保存和校验用户的身份,最先出现的是cookie。 Cookie:是由服务器下发到用户(浏览器)本地的用于校验身份的数据。cookie工作的机制:用户第一次请求服务器服务器根据用户提交的数据来识别用户身份,然后下发对应的cookie用户第二次携带cookie请求服务器...转载 2019-07-17 22:13:26 · 530 阅读 · 0 评论 -
(十八)Django中的Ajax请求
(一)Ajax 请求Ajax 介绍:Asynchronous Javascript and XML(异步的JavaScript和xml)。普通请求:会携带整个页面提交,最明显的特征是刷新页面,并且请求可能阻塞整个服务。这样导致:请求内容和响应内容冗余,用户体验特别差。基于以上的问题,后来出现了ajax请求。①ajax可以发起局部请求,页面整体可以不刷新,只是页面的局部刷新。...原创 2019-07-17 20:05:24 · 257 阅读 · 0 评论 -
(十)Django ORM一对多关系数据模型CRUD操作
模型搭建:学科与学员:一对多关系# 学科与学生:一对多关系# 学科模型类class Subject(models.Model): id = models.AutoField(primary_key=True) # id主键 name = models.CharField(max_length=24) # 学科名称 price = models.IntegerFi...转载 2019-07-12 22:00:43 · 308 阅读 · 0 评论 -
(二)在Django路由当中使用正则注意事项
1、当路由当中的正则有组匹配的时候,组匹配的内容或作为参数值传递给路由指向的视图函数2、当路由当中有命名组匹配,组的名称和视图函数的参数名称必须要对应3、当命名组匹配和组匹配同时出现一个url当中,组匹配会失效,所以要么全用命名组(推荐),要么全用组匹配(不推荐)4、在url匹配过程当中,因为匹配放到了一个列表当中,列表是一个有序序列,如果前面匹配成功,后面就不匹配了,所以当我们使用...原创 2019-07-10 19:17:23 · 1728 阅读 · 0 评论 -
(八)基于Django ORM进行数据库的增删改查
一、Django进行数据库的增删改查的大致步骤 1、配置数据库 2、创建数据库模型类(同步数据库) 3、编写相关页面 4、编写相应视图函数 5、配置相应视图函数的路由二、数据库配置,前期准备工作 1、这里使用sqlite数据库(Django自带的数据库) 配置默认,不用更改 如果是mysql数据库,就需要具体配置 2、使用pycharm默认数据管理...原创 2019-07-11 23:09:24 · 679 阅读 · 0 评论 -
(二十)Django的App整合(独立url、模板、静态文件及自定义过滤器标签)
一、App整合 在django开发之初,就鼓励大家进行松耦合的开发。目的追求代码独立性,可迁移性,可复用性,更方便代码的修改和维护。所以我们开发django的APP的原则就是尽量让项目独立。二、独立的url 独立的url针对多个app,也就是说在django项目当中有多个功能块儿。1、在各自的App当中创建urls.py文件2、在主urls当中包含子url主urlsfrom ...原创 2019-07-18 22:40:59 · 1039 阅读 · 0 评论 -
(十一)Django实现分页功能---paginator模块
Django自带分页模块分页的逻辑有很多种,按照前后端分页,分为:前端分页将所有数据一次性返回给前端页面,再通过js进行分页,对数据库负担 比较大。后端分页在数据库查询的时候,就查询出指定页的数据,不多查。Article.objects.all()[:5]Queryset有惰性特质,在不涉及到:1、截取2、排序3、循环的情况下,不会遍历执行。基于分页,django开发了...原创 2019-07-16 22:19:47 · 303 阅读 · 0 评论 -
(十二)Django的图片上传及富文本编辑器
一、图片上传 在django开发当中,除了静态文件的概念之外,还有媒体文件(用户上传的声音,视频,图片等文件)。将文件传递到服务器上,首先要有文件处理模块,比如: pillow(python2 PIL),其次要有文件存储的位置。一般图片在数据库中存储有两种方式1、将图片上传至服务器,数据库存放的是相应图片的具体位置2、将图片编码为二进制格式,存放至数据库,取得时候再进行解码图片配置:(...转载 2019-07-16 22:38:42 · 591 阅读 · 0 评论 -
(十三)Django项目Centos7上Nginx部署
Django项目部署至Linux的Nginx中1、准备:pycharm中的Django项目已搭建并测试完成在项目迁移至Centos之前将沙箱环境模块包先导出,数据库默认改为SQLite2、Centos中配置好python3环境参考文章链接:https://blog.csdn.net/z_ipython/article/details/931106413、安装python依赖包和Dj...原创 2019-07-16 22:59:47 · 279 阅读 · 0 评论 -
(十四)Django的request对象
Django的request对象详解:默认页面请求都是get请求当一个页面被请求时,django就会创建一个包含本次请求原信息的HttpRequest对象。django会将这个对象自动传递给响应的视图函数,一般视图函数约定俗成地使用request参数承接这个对象。常用的请求方式GET:默认是get请求,请求数据以明文形式放在路由上,get的格式是以?开头,键等于值的形式,以&...转载 2019-07-16 23:15:14 · 147 阅读 · 0 评论 -
(十六)CSRF跨域伪造攻击
csrf跨域伪造攻击:使用当前浏览器还在生效状态的cookie对指定网站进行操作。最初针对的是银行网站的转账。Django本身会对csrf进行校验,在django的1.4版本之前,csrf默认关闭,需要在settings当中手动开启,在1.4之后,默认开启在django的任何post请求,都会在请求之初,给用户下发一串用来校验身份的编码,并且每次请求不一样。如果不加csrf_token...原创 2019-07-16 23:19:31 · 180 阅读 · 0 评论 -
(十七)Django form表单类
我们通常在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息.。Django form组件就实现了上面所述的功能。总结一下,其实form组件的主要功能如下:生成页面可...原创 2019-07-16 23:40:21 · 272 阅读 · 0 评论 -
(二十一)Django的类视图和动静分离
一、Django 类视图我们通常使用的是函数作为处理请求的视图,直接、明了。但是,django只给GET和POST提供了快速的请求数据接收的方法,对于其他方法没有详细的介绍,于是在后来引进了视图类的概念。类视图的使用步骤演示:1、导入视图类的父类,继承View父类,编写视图类from django.views import View进入系统的视图类,可以看到request的方法列表...转载 2019-07-19 23:50:03 · 267 阅读 · 0 评论 -
更改Django后台模型名称和应用为中文
更改应用为中文主要更改App目录下__init__.py文件根据apps.py文件进行初始化文件配置:import osfrom django.apps import AppConfigdefault_app_config = 'Buyer.BuyerConfig'def get_current_app_name(_file): return os.path.split...转载 2019-08-08 22:23:54 · 2184 阅读 · 0 评论