繁体   English   中英

Django:从模板调用视图

[英]Django : Call a view from a template

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

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

谢谢。

在Django中,一旦您到达模板,就无法相信您可以调用Zend的Action Helper。 显然,您可以对Django中公开的网址执行AJAX调用,并检索必要的数据。 在这种情况下,您可以按如下方式将csrf令牌提供给ajax调用。

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

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

如果您的表单只是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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM