0

如何在我的布局(模板)中调用视图?

例如:我网站的每个页面上都有一个表格。我需要为每个页面生成 CSRF 令牌,但我不想将生成代码放在每个视图上。

谢谢你。

4

2 回答 2

1

在 Django 中,一旦你到达模板,我不相信你可以调用 Zend 的 Action Helper 的效果。显然,您可以对 Django 中公开的 url 进行 AJAX 调用并检索必要的数据。在这种情况下,您可以将 csrf 令牌提供给 ajax 调用,如下所示。

$.ajaxSetup({data: {csrfmiddlewaretoken: '{{ csrf_token }}' },});

我不是百分百确定,但您可以在装饰器(可以在处理请求之前将其应用于您选择的多个视图)或在上下文处理器(应用于所有已处理的视图)中实现 Zend 的 Action Helper 之类的东西要求)。

于 2012-10-30T14:03:16.650 回答
0

如果您的表单只是 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>
于 2012-10-30T13:36:57.963 回答