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 ...
随机推荐
- POJ3624(背包问题)
1.题目链接地址 http://poj.org/problem?id=3624 2.源代码 #include<iostream> using namespace std; #define ...
- python闭包和装饰器的理解
闭包: 两个函数的嵌套,外部函数返回内部函数的引⽤,外部函数⼀定有参数 def 外部函数(参数): def 内部函数(): pass return 内部函数 他跟函数之间的区别: 1.格式两个函数嵌套 ...
- Navigator - BOM对象
Navigator 对象 Navigator 对象包含有关浏览器的信息. 注释:没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象. Navigator 对象集合 集合 描述 ...
- Python小代码_15_遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间
遍历指定路径下的所有文件和文件夹,并格式化输出文件路径文件名和文件夹名,文件大小,修改时间 import osimport datetime def print_tree(dir_path): for ...
- codeforce467DIV2——D. Sleepy Game
分析 这个题乍一看有点像之前在CF上做过的一道DP,也是两个人下棋,但是写着写着觉得不对···这个题是的最优策略只是player 1 如果有环则是draw,可以DFS的时候顺便判环(拓扑排序的方法), ...
- 微信内置浏览器中的cookie很诡异呀
微信内置浏览器中的cookie很诡异呀 这是设置和删除COOKIE的代码 function set_cookie($var ,$value = '' ,$expire = 0){ $path = '/ ...
- 性能优化之_android多线程
本文大纲为: 如何创建线程 线程间如何通讯 线程间如何安全的共享信息 一.线程的创建 Thread在run方法中执行具体事务,或者传入一个runnable对象,但是不能调用view控件的更新方法,但是 ...
- 数字图像处理实验(10):PROJECT 05-01 [Multiple Uses],Noise Generators 标签: 图像处理MATLAB 2017-05-26 23:36
实验要求: Objective: To know how to generate noise images with different probability density functions ( ...
- 杀毒软件 avg
http://filehippo.com/download_avg_antivirus_64 R studio: https://www.rstudio.com/products/rstudio/do ...
- unbutu下wireshark编译安装(已更新)
今天下午在ubuntu下进行编译安装wireshark,过程中出了很多错误,但最终安装成功了,这里写下自己的安装步骤和方法,有参考博文的安装编译方法,也有自己的总结和心得. 1 安装编译工具 $sud ...