django bug 与陷阱
环境:ubuntu,python3.4
1.QueryDict 陷阱 :以下语句语句是取每行的头元素,其中line应该是一个列表。问题是,line在实际运行中已经不是列表,而变成了列表中的头元素。
错误:  {key:line[0] for key,line in query_info.items() if len(line)>0}
list_info是django里面的QueryDict形式;
正常:  {key:line[0] for key,line in dict(query_info).items() if len(line)>0}
完全正常。
原因:QueryDict 会将内容序列化(字符串化)
2.Session 陷阱:django的session虽然类似字典,但是,如果你直接赋值字典给它会出现丢失数据的状况。原因:请参考 https://docs.djangoproject.com/en/1.8/topics/http/sessions/
当你添加字典到session时候,初次添加会更新session,但是当后面修改字典里面内容时候,不会触发更新session,只更新字典本身,所以会出现字典中某个更新值丢失状况。
解决方法:在settings中设置以下代码,这样在每次request中修改,都会更新session信息。
SESSION_SAVE_EVERY_REQUEST=True
3.django国际化:
在国际化代码里面设置
LANGUAGE_CODE = 'zh-hans' 或者
LANGUAGE_CODE = 'zh-cn'
LANGUAGE_这里面有个问题是,如果你写zh_cn是没有错的,但是如果写zh_hans的话,就会出现莫名的错误,跟踪发现,django将zh-hans指向zh_Hans文件夹,而对于zh-cn指向zh_hans文件夹。在这里折磨很久。
另外,在django-admin makemessages -l zh_Hans,或者 django-admin makemessages -l zh_CN ,一定注意不能写成 zh-Hans,或者 zh-CN
4.支付宝的notify异步通知处理:
由于加入了csrf防护,支付宝在直接调用视图函数进入post处理的时候,由于没有csrf的信息,会被禁止访问,服务器反馈提示403错误。
解决方法:csrf_exempt装饰器可以单独使得视图函数忽略csrf,而对单独视图启动防护的装饰器:csrf_protect
5.django与js:
django中的模板变量js也可以使用的,但是如果这个js是单独的文件,这时候就不能辨识模板变量了。使用模板变量要么将其放在template中的script里面,要么就在template中赋值一个js变量,让js文件可以获取这个js变量。
6.django的session_cookie_name :session文件名在cookie中对应的key, 如果在多个服务中,配置相同的session_cookie_name,而且这个多个服务又使用相同的memcache,其实就是多个服务共享了session
7.django的 blocktrans _na,这是一个坑,我要翻译status变量,这个怎么也不翻译,终于在stackflow中找到答案:blocktrans is for translating the text around a variable, but it won't translate the variable itself.;也就是说这个只翻译文字,不翻译变量。坑坑坑!!!不说谁知道.
{% blocktrans with status=cdn_info.cdn_domain.status %}{{status}}{% endblocktrans %}
8.template 里面,如果模板变量中包含\n,需要escape,一般自动escape了,但是如果模板变量在js中,需要过滤器, escapejs
"{{ var|escapejs }}"
django bug 与陷阱的更多相关文章
- azure django bug
		
azure web app service azure web app service无法部署dhango网站 本地服务器测试代码 实际azure测试 django service 没有部署选项,需要 ...
 - Linux Native Aio 异步AIO的研究
		
Linux Native Aio 异步AIO的研究 http://rango.swoole.com/archives/282 首先声明一下epoll+nonblock从宏观角度可以叫做全异步,但从微观 ...
 - PHP最佳实践(译)
		
原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...
 - 【Python】《大话设计模式》Python版代码实现
		
<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...
 - 大话设计模式--Python
		
作者:五岳 出处:http://www.cnblogs.com/wuyuegb2312 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一 ...
 - 《大话设计模式》Python版代码实现
		
上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的 ...
 - django formset bug?
		
碰到了一个郁闷的问题,修改inlineformset时,全部删掉子表,再新增一行时,报错. 背景: 用django配合jq做动态表格,实现用js动态添加/删除行,并通过inlineformset更新到 ...
 - django request bug
		
bug描述:django请求request接收数据时,如果参数中包含分号时,会导致分号后面的消息丢失. 比如前台js调用代码 $.post('/get_params', { "A" ...
 - Django中关于MySQL的bug总结
		
bug one: You are trying to add a non-nullable field 'height' to person without a default; we can't d ...
 
随机推荐
- 前端工作准备-foxmail登陆失败汇总
			
foxmail 管理邮箱账号的一个工具软件, 但是在登陆的时候总是遇到明明账号密码没有问题,却总是报错,这里我登陆的时候的集中解决方法总结下: pop和imap 是邮箱的两种协议,大多选imap协议, ...
 - Hbase 一次表异常,有一张表 无法count scan 一直显示重连
			
z_activeagent z_weekstore z_wstest zz_monthstore row(s) in 0.5240 seconds => ["KYLIN_02YJ3NJ ...
 - 通过模板判断Value是否为指针
			
有个参数,需要判断其Value是否为指针,如果是做相应的处理. 代码示例如下,后来发现is_pointer在std空间中. #include <stdio.h> #include<i ...
 - 安卓 textview 换行 不满就换了
			
public static String ToDBC(String input) { char[] c = input.toCharArray(); for (int i = 0; i < c. ...
 - 07-Location之正则匹配
			
大网站专门有自己的图片服务器,起码也得单独放一个目录里面. 淘宝网有些图片开启了防盗链(即使是小图片,也不让你下载,真小气).163新闻可以下载. 用正则匹配uri中的image,就是说你的uri中到 ...
 - js,javascript生成 UUID的四种方法
			
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
 - 23-单词数(HDU2070)
			
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
 - 62-U型数字
			
https://nanti.jisuanke.com/t/20683 #include <iostream> using namespace std; int main(){ int ct ...
 - Docker学习之路(三)Docker网络详解
			
1. Docker的4种网络模式 我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host ...
 - Linux扩展根目录
			
一.简介 使用linux系统的过程中,有时发现系统根目录(/)的空间不足,导致系统运行很慢,针对该现象,本文详细介绍根目录(/)的空间扩展方法. 二.操作步骤 1)查看根目录大小 df 2)查找系 ...