jinja2模板引擎号称比Django自带的快10倍,另外还有别的强大的功能,那为什么不用呢? 配置支持jinja2 新增两个文件,把它们放在项目内: backends.py import sys from django.template.backends import jinja2 as jinja2backend from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy from django.template import TemplateDoesNotExist, TemplateSyntaxError from django.utils.module_loading import import_string import jinja2 import six # Original link: # https://code.djangoproject.com/attachment/tic 继续阅读 >>


李余通 17/10/22 21:30:40
jinja2模板引擎号称比Django自带的快10倍,另外还有别的强大的功能,那为什么不用呢? 配置支持jinja2 新增两个文件,把它们放在项目内: backends.py import sys from django.template.backends import jinja2 as jinja2backend from django.template.backends.utils import csrf_input_lazy, csrf_token_lazy from django.template import TemplateDoesNotExist, TemplateSyntaxError from django.utils.module_loading import import_string import jinja2 import six # Original link: # https://code.djangoproject.com/attachment/tic 继续阅读 >>


李余通 17/10/22 21:30:40
CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。 ——百度百科 网上关于csrf攻击的一个最典型的例子是银行通过url+参数转钱的问题,很好理解。 flask 作为一个强带的web微框架,自然也是支持防范csrf攻击的。 通过Flask-WTF来保护表单免受CSRF攻击 何为Flask-WTF 简单说来,使用它可以方便我们构建表单和验证表单,具体用法这里不做赘述 怎么开启保护? 极少的配置,一个应用令牌: app.config['SECRET_KEY'] = 'you can't know' 或csrf专用令牌 app.config['WTF_CSRF_SECRET_KEY'] = 'IT 666 to 709 kill pic' Flask-WTF默认是开启CSRF保护的,你需要的做的是在你的模板中 继续阅读 >>


李余通 17/10/16 21:56:21
0x01 前言 用过Django的小伙伴都知道,Django的ORM是自带的,比较特殊,而且集成了很多功能,比如数据库迁移… 何为ORM,个人之见解,简化sql语句的书写,将关系型数据库的一张张表转化为了python的类,最大的好处是简化了学习成本,不会sql语句的程序员也能平滑的使用数据库,并且天生防sql注入。flask可以使用SQLAlchemy,包名为flask-sqlalchemy.至于具体用法翻译的官方文档讲的也足够清楚。大家直接谷歌跟着文档就能搞定,本篇主要讲如何进行数据库迁移。 flask的小工具 大家从Django转至Flask最明显的一个差异就是,flask直接运行就可以启动服务,Django是使用了runserver来进行运行。至于好坏大家自行斟酌。这里提一个插件。flask-script。pip安装即可。 from flask_script import Manager ...... manager = Manager(app) ...... #app.run() 继续阅读 >>


李余通 17/09/24 20:05:11
本机环境 操作系统:fedora24 python版本:3.5 Django版本:1.11.1 jinja2版本:2.9.6 为何要更换 DTL 先来谈谈Django的模板引擎,找了下,并没有一个确定的名字,就简单的叫Django Templates Language(DTL),中文就叫Django模板语言。使用中,大家会发现很多局限性,最明显的就是四则运算。就只能加减,乘除都不支持。另外还有判断相等,不能直接if,要用ifequal。确实不太方便。还有一点,DTL很慢,jinja2宣称比DTL快10-20倍。 jinja2 先来安装,pip3 install jinja2。 配置:从Django1.8开始,支持第三方模板引擎,可以很容易的配置到。首先,在你的项目下建立一个jinja2_env.py,内容如下: #from __future__ import absolute_import # 如果是py2就取消这行的注释 from django.contrib 继续阅读 >>


李余通 17/08/16 08:56:00
最近,自己暑假写的小项目也算完毕了,想着投放到自己云服务器上,本来以为只要打开端口运行python3 manager runserver 0.0.0.0:80就搞定了,最后才知道这只适用于Django的开发模式,只支持单用户访问,既然如此,那么就得需要web服务器进行部署了。我便使用了nginx nginx? 为什么是nginx? 首先我觉得它小,很轻量级,用着简便,没有apache那么庞杂,并且网上都推荐nginx部署Django。 安装 这里直接略过,说一点Linux用户推荐大家源码安装,因为命令安装可能会自己装成一个淘宝二次开发的nginx,个人还是推荐用原版。 uwsgi 为何还需要这东西 简单来说,nginx属于反向代理服务器,他能做什么事呢?监听一个端口,比如说80,可以配置一个反向代理端口,比如8000,这样,所有外部用户对80端口的访问实际上都是请求了8000端口的数据,只是用户并非真实的在与8000端口交流,而是通过了80这座桥梁。目前自己只觉得这样能隐藏自 继续阅读 >>


李余通 17/08/14 15:44:06
引言 近来在用Django做一个二手发布网站,需要实现用户注册之类,其中定然少不了用户头像了。但由于自己单枪匹马,没有一个前端大手帮忙写页面,所以也没奢求用户可以在前端自行对图片进行剪裁,想也个比较low的办法,把用户上传的图片的中心内容截出来作为图片 实现 from PIL import Image,ImageDraw,ImageFont,ImageFilter #创建缩略图,参数为图片的完整路径(判断是否是图片请于上层处理,这里默认是图片文件) def creat_head(path): #生成一个24为字母数字作为头像名 name = ''.join(random.sample(string.ascii_letters + string.digits, 24))+'.png' img = Image.open(path) #取图片长宽的较小值 small = min(img.size) #去出来的部分为中心部分的矩形(如300*100取的是(100,0,200,100)) box = 继续阅读 >>


李余通 17/08/08 11:12:04
导入 from django.shortcuts import render, render_to_response 作用 两者均是用来展示模板页面的。 参数区别 最明显的一个,render的第一个参数是request,后面的参数则和render_to_response相同 区别 由于传入参数的不同,造成了一个最直接的问题: 能否在模板中使用request的属性,例如session等。 所以,如果你要在模板中使用request的属性,请务必使用render。否则模板渲染时是得不到相应的request变量值的。 作者:baidu_35085676 发表于2017/8/4 10:22:49 原文链接 阅读:5 评论:0 查看评论 继续阅读 >>


李余通 17/08/04 10:22:49
转载自浅谈数据库用户表结构设计,第三方登录 说起用户表,大概是每个应用/网站立项动工(码农们)考虑的第一件事情。用户表结构的设计,算是整个后台架构的基石。如果基石不稳,待到后面需求跟进了发现不能应付,回过头来反复修改用户表,要大大小小作改动的地方也不少。与其如此,不妨设计用户表之初就考虑可拓展性,争取不需要太多额外代价的情况下一步到位。 先前设计:   id   username   password   用户名加上密码,解决简单需求,留个id作为其他表的外键。当然,那时候密码还可能是明文存储,好点的知道md5。   后来呢,随着业务需求的拓展,要加个用户状态 status 判断用户是否被封禁,注册时间和注册IP地址、上次登录时间和IP地址备查(并衍生出登录记录表,用来判断是否异地登录等,在此不表),用户角色/权限 role (又衍生出用户角色权限关系,还是另文讨论),业务也需要个人的个人信息如真实姓名、地址等也一股脑往上添加,现在形成了一个很完整的用户关系表。   id   username   password   realname 继续阅读 >>


李余通 17/08/03 09:33:04
背景 这个暑假,打算写一个校园二手交易平台,用Django写,学长给我推荐了蓝鲸Django框架,刚好那个时候这个项目还没怎么开始写,便将开发框建换成了蓝鲸的Django框架。 在实际操作中,要保存用户的物品内容以及评论,这里都可能会出现emoji表情。但蓝鲸实际上是不支持的。 不支持的原因 首先,蓝鲸推荐安装的是MySQL-python==1.2.3,这东西无法让你根数据库使用utf8mb4编码交流,而mysql存储emoji的必要条件就是编码得是utf8mb4,但是蓝鲸分配给你的mysql只是utf8编码。 解决方法 mysql包 两种解决方案, 1.在requirements.txt中改为 MySQL-python==1.2.5 2.使用pymysql==0.7.11 在你的app目录下的__init__.py加入 import pymysql pymysql.install_as_MySQLdb() 编码 编码这东西仅靠蓝鲸分配的mysql是没办法解决的,因为你没法登录上去修改。这一点,推荐大家去腾讯云弄一 继续阅读 >>


李余通 17/08/02 16:34:55