django网站搭建常用的一些代码
from functools import wraps
def check_user_login(func): @wraps(func) def return_wrapper(request, *args, **kwargs): if not request.user.is_authenticated(): return render_to_response('xxx.html') else: return func(request, *args, **kwargs) return return_wrapper
该函数用来检查用户是否登录,是个装饰器,使用了wraps装饰器来保证被装饰的函数函数名和属性不发生变化。使用is_authenticated()函数来判断是否登录,这是django自带的函数。如果没有登录返回一个xxx模板,可以修改。
from functools import wraps def check_method(func): @wraps(func) def returned_wrapper(request, *args, **kwargs): if request.method != 'POST': err = u'提交方式有误' return render_to_response('err.html', {"err": err}) else: return func(request, *args, **kwargs) return returned_wrapper
该函数用来检查用户提交的方式是否为POST,可能作用不大。
from django.shortcuts import HttpResponse import json def xxx(): result = dict() try: //TODO result['ret'] = 0 result['status'] = 'success' except Exception, e: result['ret'] = 10000 result['status'] = 'failed' result['message'] = str(e) return HttpResponse(json.dumps(result), content_type="application/json")
该函数用来接收前端的jquery请求,返回一个json对象,根据ret来判断是否成功,经常同下面的jquery一起使用。
function ajax(type, url, datas, msg) { $.ajax({ type: type, url: url, data: datas, async: false, success: function (data, status) { if (data.ret == 0) { alert(msg+'成功!');
location.reload()
} else { alert(msg+"失败!失败原因:" + data.message); } }, error: function (data) { alert(msg+"错误!错误原因:" + data); } }); }
一个普通的ajax请求,封装到ajax函数中,省的每次都要复制粘贴很麻烦,使用异步ajax,在执行该ajax请求是其他请求可以继续执行。