Django
文章平均质量分 77
Ayhan_huang
Die Nacht ist dunkel und voller Schrecken.
展开
-
Django(一)预热
WSGIWSGI(Web Server Gateway Interface)web服务器网关接口。它是python下的一个标准,定义了web服务器和web应用或框架之间一种简单而通用的接口。在python中,它的具体实现是wsgiref模块。手动实现一个web框架为了更好的理解web框架,我们来试着手动实现一个简单的web框架。先写基本的逻辑:from wsgiref.simple_server i原创 2017-08-21 13:50:52 · 714 阅读 · 0 评论 -
Django数据库补充之事务
往数据库写入数据时,如果写入了不完整的数据,我们称之为脏数据。事务管理(transaction)可以防止这种情况发生。事务管理一旦监测到写入异常,会执行回滚操作,即要么写入完整的数据,要么不写入。在Django中使用事务很简单,我们来测试一下:新建项目Transaction,创建应用app01,编辑models创建两张表并执行数据库迁移,如下:from django.db import model原创 2017-10-14 12:08:10 · 836 阅读 · 0 评论 -
获取Django所有路由
直接上代码:from django.urls import RegexURLPatterndef get_all_urls(patterns, pre_fix, is_firt_time=False,result=[]): if is_firt_time: result.clear() for item in patterns: # print(item原创 2017-10-25 20:11:09 · 3982 阅读 · 0 评论 -
Django中的Form & ModelForm
在web开发中,处理表单是家常便饭,我们当然可以直接在模板中编写原生的html表单,然后在后端进行表单验证,这常常是一项繁琐的工作。Form我们可以通过Django提供了表单功能,来方便表单的处理。下面看一下如何使用:自定义表单类from django import forms # 导入表单模块from django.core.exceptions import ValidationError原创 2017-09-25 08:37:27 · 2924 阅读 · 1 评论 -
简单实现Popup弹出框添加数据
Popup弹出框添加数据逻辑窗口P1中显示一组数据,并提供一个添加按钮点击按钮,弹出新的浏览器窗口P2,在其中添加一条数据并提交后,窗口P2自动关闭新添加数据动态添加到窗口P1中并被选中所需知识:JS BOM 窗口对象;JS自执行函数实现下面在Django中简单实现下,因为比较简单,路由和视图就写在一起了。路由和视图部分from django.conf.urls import urlf原创 2017-10-26 19:47:46 · 4449 阅读 · 0 评论 -
Django contenttypes 应用
contenttypes 是Django内置的一个应用,可以追踪项目中所有app和model的对应关系,并记录在ContentType表中。每当我们创建了新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。比如我在应用app01的models.py中创建表class Electrics(models.Model): pass。从数据库查看ContentType表,显示如原创 2017-11-24 17:50:49 · 1565 阅读 · 0 评论 -
Django配置数据库读写分离
Django配置数据库读写分离对网站的数据库作读写分离(Read/Write Splitting)可以提高性能,在Django中对此提供了支持,下面我们来简单看一下。注意,还需要运维人员作数据库的读写分离和数据同步。配置数据库我们知道在Django项目的settings中,可以配置数据库,除了默认的数据库,我在下面又加了一个db2。因为是演示,我这里用的是默认的SQLite,如果希望用MySQL,看原创 2017-12-12 17:57:57 · 6749 阅读 · 1 评论 -
Django中static & media的简单配置及图片上传实践
static & media在Django应用的文件夹下,经常会发现这两个文件夹:static, media; static称为静态文件夹,用于存放CSS, JavaScript, 网站logo等不变的文件;相对的,把media称为媒体文件夹,用于存放用户上传的图片。static 配置和使用配置项目的settings.py:STATIC_URL = '/static/' # 静态文件别名(相对原创 2017-10-10 15:52:55 · 7361 阅读 · 1 评论 -
Django(五)中间件
一次请求的生命周期我们先看客户端发起一次http请求的流程 注:django框架不包括socket, 要借助图中的两个模块来实现socket,进行客户端和服务端通信。wsgi性能较弱,一般测试开发用;企业中用uwsgi,性能强,并发好。中间件从图上可知,请求在到达视图之前,会依次执行中间件,视图返回的响应,依次倒序执行中间件。 中间件的本质是一个个的类,类中定义了一些方法。在django项目原创 2017-09-18 13:35:46 · 1275 阅读 · 0 评论 -
Django(四)数据库
未完,更新中。。。一、数据库框架数据库框架是数据库的抽象层,也称为对象关系映射(Object-Relational Mapper, ORM),它将高层的面向对象操作转换成低层的数据库指令,比起直接操作数据库引擎,ORM极大的提高了易用性。这种转换会带来一定的性能损耗,但ORM对生产效率的提升远远超过这一丁点儿性能降低。 Django中内置的SQLAlchemy ORM就是一个很好的数据库框架,它为原创 2017-08-25 18:07:28 · 1705 阅读 · 0 评论 -
Cookie & Session
Http协议和Cookie请求和响应Http协议用于客户端与服务端的通信,客户端发出请求,服务端返回响应。下面我们以访问https://www.sogou.com/搜狗首页为例,来看看请求报文和响应报文: 下面是从客户端访问服务器的请求报文的截取内容:GET / HTTP/1.1Host: www.sogou.comConnection: keep-aliveCache-原创 2017-09-19 17:03:54 · 743 阅读 · 0 评论 -
Django REST framework API开发
REST介绍RESTful API 设计实现API的两种方式FBV 视图函数urlpatterns = [ url(r'^user/$', views.user), url(r'^user/add/$', views.user_add), url(r'^user/edit/(\d+)/$', views.user_edit), url(r'^user/del/(\d+原创 2017-11-20 19:42:00 · 4444 阅读 · 0 评论 -
Django(二) 路由和视图
路由定义路由是客户端访问的url路径与视图函数间的一一映射关系。Django中的路由关系在urls.py文件中,基本格式如下:urlpatterns = [ url(regex,view, kwargs=None, name=None),]参数说明: regex: 匹配url路径的正则表达式,比如r'^login/', 匹配以login/开头的路径,当你在浏览器地址栏输入http://1原创 2017-09-20 08:39:02 · 1348 阅读 · 0 评论 -
Django Admin
简介Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件。基本用法:配置路由,项目中默认已经配置:from django.conf.urls import urlfrom django.contrib import adminurlpatterns = [ url(r'^admin/', admin.site.urls), ]注册model:原创 2017-10-19 22:21:09 · 900 阅读 · 0 评论 -
Django(三)模板
1 简介1.1 什么是模板视图函数的作用是生成请求的响应,这种响应通常就是用户所看到的html网页。模板就是带有模板语法({{ }}, {% %})的html文件,它能接收视图函数传递的变量,通过模板引擎,模板被渲染成html页面。1.2 语法在模板中,使用{{ }}结构表示一个变量,它是一种特殊的占位符,告诉模板引擎,这个位置的值从渲染模板时传入的变量获取;使用{% %}结构渲染标签(控制结构)。原创 2017-08-24 13:35:07 · 683 阅读 · 3 评论 -
基于Django实现RBAC权限管理
概述RBAC(Role-Based Access Control,基于角色的访问控制),通过角色绑定权限,然后给用户划分角色。在web应用中,可以将权限理解为url,一个权限对应一个url。在实际应用中,url是依附在菜单下的,比如一个简单的生产企业管理系统,菜单可以大致分为以下几块:制造、资材、生产管理、人事、财务等等。每个菜单下又可以有子菜单,但最终都会指向一个url,点击这个url,通过Dja原创 2017-09-26 14:03:47 · 16878 阅读 · 15 评论 -
django中的CSRF
CSRF,跨站请求伪造,是django内置的一个中间件安全机制,相信大家都碰到过因为它而导致POST请求报错的情况,最简单的解决方案是在form中加入 csrf_token:<form action="" method="post"> {% csrf_token %} <input type="text" name="name"> ......</form>那么对于ajax原创 2017-09-18 20:04:12 · 531 阅读 · 0 评论 -
Django 缓存
Django缓存简介为什么要用缓存?我们知道,在Django中,请求到达视图后,视图会从数据库取数据放到模板中进行动态渲染,渲染后的结果就是用户看到的html页面。但是,如果每次请求都从数据库取数据并渲染,将极大降低性能,不仅服务器压力大,而且客户端也无法即时获得响应。如果能将渲染后的结果放到速度更快的缓存中,每次有请求过来,先检查缓存中是否有对应的资源,如果有,直接从缓存中取出来返回响应,节省取数原创 2017-09-20 16:38:08 · 2693 阅读 · 0 评论 -
Django 信号
Django 信号Django提供一种信号机制,一些动作发生时,会触发信号,然后监听了这个信号的函数就会被执行。比如,实现数据库每写入一条数据,写一条日志。要实现这个需求,可以通过全局的中间件来做,但是利用Django的信号机制会更灵活。中间件只作用在请求进来和响应出去时,而信号的散布范围更广。我们先看看Django内置了哪些信号:Model signalspre_init原创 2017-09-20 18:56:56 · 1485 阅读 · 0 评论 -
验证码
验证码的生命周期在web应用中,验证码常用于登录注册。验证码本质就是一张图片。 我们来看一下验证码的生命周期: 1. 客户端请求验证码 2. 服务端渲染验证码: - 渲染一张包含随机字符串的图片 - 随机字符串写入session - 读取图片并返回响应 3. 客户端提交: - 显示响应(即验证码图片) - 获取用户输入字符串原创 2017-10-08 16:48:03 · 786 阅读 · 0 评论 -
Django,再谈json序列化
我们知道JSON字符串是目前流行的数据交换格式,在pyhton中我们通过json模块,将常用的数据类型转化为json字符串。但是,json支持转化的数据类型是有限的。比如,我们通过ORM从数据库查询出的结果,试图通过json序列化:from .models import UserInfodef index(request): user_list = UserInfo.objects.all(原创 2017-09-20 19:48:49 · 6402 阅读 · 0 评论 -
kindeditor图片上传
KindEditor是一款用Javascript编写的开源在线HTML编辑器,主要用户是让用户在网站上获得可见即可得的编辑效果,开发人员可以用 KindEditor 把传统的多行文本输入框(textarea)替换为可视化的富文本输入框使用到官网下载 KindEditor 最新版本,解压后将所有文件拷贝到项目的static文件夹下。注意,可以根据需要删除以下目录:asp - ASP程序asp.n原创 2017-10-11 06:45:58 · 4263 阅读 · 1 评论 -
API验证
API验证在web应用中,服务端提供的API接口必须有某种安全机制,来识别Http请求是否合法,以防别有用心之人截获http请求,对服务端进行攻击的行为。这里,参考Tornado签名cookie源码,来实现一个API验证的功能。基本思路:服务端给有权限访问的客户端发放key,客户端每次访问时携带key给服务端进行验证。为了防止请求被截获后key泄露,将key与当前时间进行加密后生成动态密钥。请原创 2017-10-11 13:49:19 · 1113 阅读 · 0 评论