zoukankan      html  css  js  c++  java
  • 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 里面,如果模板变量中包含 ,需要escape,一般自动escape了,但是如果模板变量在js中,需要过滤器,   escapejs

    "{{ var|escapejs }}"
     
  • 相关阅读:
    模块介绍
    homebrew 更改镜像,进行成功安装
    必须要会的 50 个 React 面试题
    聚合
    mongodb高级聚合查询
    一款好用 mongodb 可视化工具
    在Mac上安装MongoDB,配置全局路径
    深入Vue2.x的虚拟DOM diff原理
    H5在WebView上开发小结
    接口文档RAP2 环境搭建(正常搭建成功)
  • 原文地址:https://www.cnblogs.com/yasmi/p/4809495.html
Copyright © 2011-2022 走看看