环境: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 与陷阱的更多相关文章

  1. azure django bug

    azure web app service azure web app service无法部署dhango网站 本地服务器测试代码 实际azure测试 django service 没有部署选项,需要 ...

  2. Linux Native Aio 异步AIO的研究

    Linux Native Aio 异步AIO的研究 http://rango.swoole.com/archives/282 首先声明一下epoll+nonblock从宏观角度可以叫做全异步,但从微观 ...

  3. PHP最佳实践(译)

    原文: PHP Best Practices-A short, practical guide for common and confusing PHP tasks 译者:youngsterxyf 最 ...

  4. 【Python】《大话设计模式》Python版代码实现

    <大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼 ...

  5. 大话设计模式--Python

    作者:五岳 出处:http://www.cnblogs.com/wuyuegb2312 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一 ...

  6. 《大话设计模式》Python版代码实现

    上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的 ...

  7. django formset bug?

    碰到了一个郁闷的问题,修改inlineformset时,全部删掉子表,再新增一行时,报错. 背景: 用django配合jq做动态表格,实现用js动态添加/删除行,并通过inlineformset更新到 ...

  8. django request bug

    bug描述:django请求request接收数据时,如果参数中包含分号时,会导致分号后面的消息丢失. 比如前台js调用代码 $.post('/get_params', { "A" ...

  9. Django中关于MySQL的bug总结

    bug one: You are trying to add a non-nullable field 'height' to person without a default; we can't d ...

随机推荐

  1. BMP格式详解

    BMP格式详解 BMP文件格式详解(BMP file format) BMP文件格式,又称为Bitmap(位图)或是DIB(Device-Independent Device,设备无关位图),是Win ...

  2. Python三元运算和lambda表达式

    一.三元运算 1.定义:三元运算是if-else 语句的快捷操作,也被称为条件运算. 2.结构: [on_true]  if  [expression]  else  [on_false] 3.示例: ...

  3. Centos 6.5 python 2.6.6 升级到 2.7

    1.查看python的版本 [root@localhost ~]# python -V Python 2.6.6 2.安装python 2.7.3 [root@localhost ~]# yum in ...

  4. objc变量的获取

    [objc变量的获取] C++成员变量通过偏移来寻找,速度极快.But Objc中的变量通过方法调用来寻找,方法首先根据变量名,找到ivar_t,然后在ivar_t对象中取出偏移,再用此偏移来取值(这 ...

  5. Springboot21 整合redis、利用redis实现消息队列

    1 前提准备 1.1 创建一个springboot项目 技巧01:本博文基于springboot2.0创建 1.2 安装redis 1.2.1 linux版本 参考博文 1.2.2 windows版本 ...

  6. Opencv3 Mat对象构造函数与常用方法

    构造函数 Mat() Mat(int rows,int cols,int type) Mat(Size size,int type) Mat(int rows,int cols,int type,co ...

  7. Reddit指南

    一.简介 Reddit是网页新鲜事件和热点事件的源头,它也是互联网最有趣的地方和有高度组织的链接集中处.   二.指南 http://article.yeeyan.org/view/523415/45 ...

  8. 1.scala基础语法总结

    Scala基础语法总结:Scala 与 Java 的最大区别是:Scala 语句末尾的分号 ; 是可选的.如果一行里写多个语句那么分号是需要的 val s = "菜鸟教程"; pr ...

  9. 怎样去阅读一份php源代码

    一份好的源代码例如 dz的论坛,wind论坛,帝国cms,dedecms等,都具有自己的一套设计思路和设计模式,所以在看某个产品之前就要做好心理准备,可以把自己的经验和这些产品做对比,但千万别一直用自 ...

  10. Smarty3——内置函数

    Table of Content {$var} {$append} {assign} {block} {call} {config_load} {debug} {extends} {for} {for ...