Django整合Extjs Crsf Json(二)
来源:互联网 发布:强制视频软件 编辑:程序博客网 时间:2024/06/15 23:29
1.Crsf
Extjs里面所有的表单都是通过Ajax提交的,所以会被Crsf所拦截
所以在每个页面需要引入如下js,主要是在提交表单时设置 crsf信息
//crsf验证Ext.Ajax.on('beforerequest', function (conn, options) { if (!(/^http:.*/.test(options.url) || /^https:.*/.test(options.url))) { if(Ext.util.Cookies.get('csrftoken')==null){ Ext.util.Cookies.set('csrftoken','csrftoken') } if (typeof(options.headers) == "undefined") { options.headers = {'X-CSRFToken': Ext.util.Cookies.get('csrftoken')}; } else { options.headers['X-CSRFToken']=Ext.util.Cookies.get('csrftoken'); } }}, this);
2. 封装Json结果和Ajax请求装饰器
import datetimeimport decimalfrom django.http import Http404, HttpResponsefrom django.utils import simplejsonfrom django.utils.timezone import is_awarefrom django.db import modelsfrom science import settingsfrom const import Constfrom django.core.serializers import serializefrom django.utils.simplejson import dumps, loadsfrom django.db.models.query import QuerySet, ValuesQuerySetfrom django.utils.functional import curryclass DjangoJSONEncoder(simplejson.JSONEncoder):"""JSONEncoder subclass that knows how to encode date/time and decimal types."""def default(self, o):# See "Date Time String Format" in the ECMA-262 specification.if isinstance(o, datetime.datetime):return o.strftime('%Y年%m月%d日')elif isinstance(o, datetime.date):return o.isoformat()elif isinstance(o, datetime.time):if is_aware(o):raise ValueError("JSON can't represent timezone-aware times.")r = o.isoformat()if o.microsecond:r = r[:12]return relif isinstance(o, decimal.Decimal):return str(o)elif isinstance(o,ValuesQuerySet):return list(o)elif isinstance(o, QuerySet):return loads(serialize('json', o))elif isinstance(o, models.Model):return dict([(attr, getattr(o, attr)) for attr in [f.name for f in o._meta.fields]])else:return super(DjangoJSONEncoder, self).default(o)dumps = curry(dumps, cls=DjangoJSONEncoder)def Ajax(fn):def wrapper(*args, **kv):request = args[0]if not settings.DEBUG and\not request.is_ajax():raise Http404result= fn(*args, **kv)result=dumps(result)return HttpResponse(result,mimetype="application/json")return wrapper
TODO ....
- Django整合Extjs Crsf Json(二)
- web攻击手段(二)CRSF
- Django解决CRSF问题
- Django整合Extjs 配置路径(一)
- django crsf not set问题
- extjs和struts、json的整合
- extjs和struts、json的整合 - taelons的专栏 - CSDNBlog
- JSON,Struts2,Spring,Hibernate,Extjs整合应用案例
- ExtJS学习心得(二)
- ExtJS学习心得(二)
- ExtJS学习心得(二)
- Extjs介绍(二)
- extjs Grid (二)
- extjs学习(二)
- extjs入门(二)
- SpringMVC 中整合JSON、XML视图二
- SpringMVC 中整合JSON、XML视图二
- SpringMVC中整合JSON、XML视图二
- linux mac os 常用terminal 命令
- AudioSession
- AE9.3中 MapAndPageLayoutSynchApp 中小bug 的解决办法
- TCP/IP 读书笔记
- 读书笔记之组合数学——卡特兰数
- Django整合Extjs Crsf Json(二)
- Ruby 调用本地程序
- 二叉树前序、中序、后序遍历相互求法
- Struts2的类型转换器
- 案例分析:基于消息的分布式架构
- android4.0修改launch的屏数和默认显示屏及添加apk包的快捷方式
- Android HorizontalScrollView和ScrollView 水平滚动 垂直滚动
- iPhone Http 服务器Mongoose的使用
- 【设计模式】装修模式