2012-10-30 46 views
0

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

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

谢谢。

回答

1

在Django中,一旦你达到了模板,我不相信你可以调用的东西Zend的动作助手的作用。 很显然,你可以对Django中的一个公开的url进行AJAX调用并检索必要的数据。在这种情况下,你可以提供CSRF令牌Ajax调用如下..

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

我不是百分之百的把握,但你可以在decorator(它可以适用于实施像Zend的动作助手在处理请求之前选择多个视图)或context processor(适用于所有视图的处理请求)。

+0

好的,谢谢你! –

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> 
+0

这不是我要找的。在Zend Framework中,你可以在视图中使用“$ this-> action”来嵌入一个动作。如何在Django中做到这一点? Thx –