请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

在配置了csrf之后页面报错

def render_to_response(request, template, data=None):
    context_instance = RequestContext(request)
    path = settings.TEMPLATES[0]['DIRS'][0]
    lookup = TemplateLookup(
        directories=[path],
        output_encoding='utf-8',
        input_encoding='utf-8'
    )
    mako_template = lookup.get_template(template)

    if not data:
        data = {}

    if context_instance:
        context_instance.update(data)
    else:
        context_instance = Context(data)

    result = {}
    for d in context_instance:
        result.update(d)

    result['csrf_token'] = '<input type="hidden" name="csrfmiddlewaretoken" value={0} />'.format(
        request.META['CSRF_COOKIE']
    )
    return HttpResponse(mako_template.render(**data))

报错信息:

图片描述

正在回答

4回答

改成 data['csrf_token']='<input type="hidden" name="csrfmiddlewaretoken" value="{0}" />'.format(request.META.get('CSRF_COOKIE',""))


4 回复 有任何疑惑可以回复我~
  • 提问者 PARADISELIN #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-10-17 20:09:07
deweizhang 2023-04-10 06:45:01

这个问题在提问区域有完整解决 可以查一查,之前帮同学解决过

0 回复 有任何疑惑可以回复我~
慕哥1266152 2019-10-17 17:44:41

又有了 我也不知道为什么, 一开始确实没有. 用get只是为了设置个默认值, 就不会报错了.


https://img1.sycdn.imooc.com//szimg/5da837cc08e05c9816850977.jpg


0 回复 有任何疑惑可以回复我~
deweizhang 2019-10-13 20:35:05

你的问题在于baserenderpy的31行 keyerror 单从你的代码看不出哪行是,但你可以自己锁定31行 keyerror是dict字典的错误 以此为起点进行检查一下

0 回复 有任何疑惑可以回复我~
  • 我跟他错误一样, 我检查了下 request.META, 里面是没有 request.META["CSRF_COOKIE"]  的, 改成     data['csrf_token']='<input type="hidden" name="csrfmiddlewaretoken" value="{0}" />'.format(request.META.get('CSRF_COOKIE',"")) 才可以.
    回复 有任何疑惑可以回复我~ 2019-10-17 17:30:34
  • 是的 是我的疏忽 meta是个dict 里边的内容要get的才可以 谢谢指出
    回复 有任何疑惑可以回复我~ 2019-10-17 17:37:11
  • 我回去再下 安说我那也应该可以取出来
    回复 有任何疑惑可以回复我~ 2019-10-17 17:38:07
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号