如何在我的布局(模板)中调用视图?
例如:我网站的每个页面上都有一个表格。我需要为每个页面生成 CSRF 令牌,但我不想将生成代码放在每个视图上。
谢谢你。
在 Django 中,一旦你到达模板,我不相信你可以调用 Zend 的 Action Helper 的效果。显然,您可以对 Django 中公开的 url 进行 AJAX 调用并检索必要的数据。在这种情况下,您可以将 csrf 令牌提供给 ajax 调用,如下所示。
$.ajaxSetup({data: {csrfmiddlewaretoken: '{{ csrf_token }}' },});
我不是百分百确定,但您可以在装饰器(可以在处理请求之前将其应用于您选择的多个视图)或在上下文处理器(应用于所有已处理的视图)中实现 Zend 的 Action Helper 之类的东西要求)。
如果您的表单只是 HTML,那么只需拥有一个包含 HTML 的模板并包含来自其他模板的模板(或将其包含在您的基本模板中)。要生成 CSRF 令牌,您只需在模板中使用 {% csrf_token %},如https://docs.djangoproject.com/en/dev/ref/contrib/csrf/中所述
如果你想生成 Django 表单的 HTML,那么你可以添加一个上下文处理器 - 在https://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext中解释- 那生成表单,然后所有模板都可以使用该表单。
def form_processor(request):
form = Form()
return { 'form': form.as_p() }
模板:
<form>{% csrf_token %}{{ {{ form }}</form>