【问题标题】:Django's Form inside jQuery DialogjQuery Dialog 中的 Django 表单
【发布时间】:2012-07-28 22:10:48
【问题描述】:

我有一个带有主模板的站点(称为 base.html),以及一些由分离视图呈现的附加子页面。在 base.html 我有菜单,单击其中一个选项会显示一个 jquery 对话框。我想在这个对话框中放置一个 djangos 表单。我还希望,无论加载什么视图,此对话框都可以发送数据。我认为我应该使用一些装饰器来从表单中恢复数据,并且这个装饰器应该包含一些依赖于 ajax 的代码?


我会澄清我的问题。

我有一个 base.html 模板,其中包含 jQuery 对话框窗口,我想在其中放置一个 django 表单。我还有分别由 view1、view2 渲染的 template1.html、template2.html 等。 template1.html、template2.html 扩展 base.html。所以我必须将表单处理代码放在渲染继承base.html的模板的每个视图中。我想避免这种情况。

【问题讨论】:

  • 嗯,你有什么问题?
  • 我会澄清我的问题。我有一个 base.html 模板,其中包含 jQuery 对话框窗口,我想放一个 django 表单。我也有分别由 view1、view2 渲染的 template1.html、template2.html 等。 template1.html、template2.html 扩展 base.html。所以我必须将表单处理代码放在渲染继承base.html的模板的每个视图中。我想避免这种情况。
  • 所以,我猜你在每个视图中使用一个表单类,对吧?问题又出在哪里?在每个视图中,您只需调用表单的处理函数,如下所示:form = process_form(request.POST)

标签: jquery python ajax django


【解决方案1】:

只需使用模板的继承,类似这样:

# base.html
...
<div id="dialog">
 {% block dialog %}
   {% form_for_base.as_table %}
 {% endblock %}
</div>
...

并在另一个模板中覆盖 dialog 块:

# template.html
{% extends "base.html" %}

{% block dialog %}
  {% form_for_template.as_table %}
{% endblock %}

【讨论】:

  • 是的,但是如何在视图中处理这个问题?事实上,因为这个对话框可以出现在许多不同的子站点中,所以我必须在每个视图中处理它。那么如何以一种简单的方式做到这一点。
  • 几乎每个视图都会渲染一个模板,对吧?那么,问题出在哪里?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
  • 2011-08-18
  • 2015-06-22
  • 2011-08-10
相关资源
最近更新 更多