django - Mako csrf_token 就像 Django 模板中一样

标签 django django-templates mako

我最近的 Django 项目使用了 mako 模板。

关于跨站请求伪造 CSRF。

在 django 模板中,有一个标签 {% csrf_token %} 来防止黑客攻击。

Mako 模板怎么样?是否有任何类似的 csrf_token 或者有其他保护机制???

谢谢!

最佳答案

我今天遇到了同样的问题(这就是我来到这里的原因)。我至少找到了一个解决方案,即通过 HTML 表单将一些 POST 数据传递到另一个 View 。这是:

  1. 从您的第一个 View 中,获取 CSRF token 并将其添加到您的 (Mako) 上下文:

    from djangomako.shortcuts import render_to_response as render  
    from django.core.context_processors import csrf
    
    def first_view(request):  
        """This view generates a form whose action is 'second_view'."""  
        context = { "csrftoken": csrf(request)["csrf_token"] }  
        return render("path/to/yourtemplate.html", context)  
    
  2. yourtemplate.html 的表单必须有一个名为“csrfmiddlewaretoken”的字段,其值为 CSRF token ,我们将其作为“csrftoken”放置在上下文中。如:

    <input type="hidden" name="csrfmiddlewaretoken" value="${ csrftoken }" />
    

来源:Cross Site Request Forgery protection (Django 1.5 Docs)

关于django - Mako csrf_token 就像 Django 模板中一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8106416/

相关文章:

python - Django:如何检查字段小部件是否是模板中的复选框?

django - 如何在 django 模板标签内使用 Angular 表达式?

javascript - 如何对齐两个输入字段和 div 内联

python - 如何在 Django 1.11 中使用 settings_local.py 覆盖 settings.py

python - 在 django 中哪里可以找到上传图片的管理代码?

django - 如何防止 Django 解释包含弯引号的 block ?

javascript - 如何将 javascript 的值传递给 Mako 模板

python - 如何检查 python mako 模板中是否存在列表变量?

python - Mako 模板 : How to find the name of the template which the current template is included by?

mysql - 如何通过限制/偏移选择来优化 select_lated?