为什么在Django中出现这个错误(我正在尝试做的是304未修改)。

2024-09-30 06:23:09 发布

您现在位置:Python中文网/ 问答频道 /正文

def list_ajax(reqest):
    #q = request.GET.get('q',None)
    #get all where var = q.
    return ...
list_ajax = condition(etag_func=list_ajax)(list_ajax)

如您所见,如果结果相同,我尝试将304返回给客户机。但是,我得到了这个Django错误,为什么?公司名称:

^{pr2}$

编辑:我这样做了:

def etag_generate(p):
    thestring =  cPickle.dumps(p)
    return thestring

@etag(etag_generate)
def list_ajax(request):
    ...
    etag_generate(mydictresults)
    return render_to_response("list.html",mydictresults)

我将所有结果转换成一个字符串,希望可以从这个字典生成一个哈希。但是,@etag似乎不允许我生成cPickle。错误是:

Exception Type: TypeError at /list/ajax/ 
Exception Value: can't pickle file objects

Tags: getreturnrequestdef错误exceptionajaxgenerate
2条回答

正确的etag_func将返回一些可序列化的数据。对你来说,最好的选择是这样的:

@etag(_get_list)
def list_ajax(request):
    objects = _get_list(request)
    return render_to_response("list.html", {"objects": objects})

def _get_list(request):
    q = request.GET["q"]
    # find and return records here
    # ...

固定的。在

已传入请求。在

def list_ajax_etag(request):
    return str(request.GET.get('l',''))+str(request.GET.get('a',''))

相关问题 更多 >

    热门问题