首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django中生成大量冗余的ajax元素,比如复选框和下拉列表?

如何在Django中生成大量冗余的ajax元素,比如复选框和下拉列表?
EN

Stack Overflow用户
提问于 2010-03-17 13:09:22
回答 2查看 136关注 0票数 0

我已经从stackoverflow得到了很多答案,因为我已经进入了Django,仅仅是通过搜索。现在,我希望我的问题也能为每个人创造一些价值。

在选择Django时,我希望有一些类似于ROR中处理偏导函数的机制。这将在两个方面帮助我。其中之一是生成重复的索引表单或表单元素,以及在往返过程中仅呈现页面的一部分。

我已经通过简单的URL点击使用taconite完成了一些工作,但现在我正在尝试更高级。这将集中在形式问题上,归根结底就是如何迭代第二个对象。

如果我有一个照片实例列表,每个实例都有几个参数,假设是大小和数量。我想分别为每个照片实例生成表单元素。但是我有两个要同时迭代的列表。

上下文:

代码语言:javascript
复制
photos : Photo.objects.all()

代码语言:javascript
复制
forms = {}
for photo in photos:
  forms[photo.id] = PhotoForm()

换句话说,我们得到了一个照片对象列表和一个基于photo.id的表单字典。

下面是模板的抽象:

代码语言:javascript
复制
{% for photo in photos %}
         {% include "photoview.html" %}
         {% comment %}
    So here I want to use the photo.id as an index to get the correct form.  So that each photo has its own form.  I would want to have a different action and each form field would be unique.  Is that possible?  How can I iterate on that?  Thanks!
Would it be a with?  In Python of course it's form = forms[photo.id] but here?
         {% endcomment %}
         
            Quantity: {{ oi.quantity }} {{ form.quantity }}

            Dimensions: {{ oi.size }} {{ form.size }}

             
              
    {% endfor %} 

对于这个简单的案例,我能做些什么?如何才能让每个控件都自动更新服务器,而不是完全使用表单?

谢谢!

詹姆斯

EN

回答 2

Stack Overflow用户

发布于 2010-03-17 14:29:52

我不确定我是否理解了您的问题,但以下是我认为您想要的,用伪代码表示:

代码语言:javascript
复制
for photo in photos:
    form = forms[photo.id]
    generate_some_html(photo, form)

实现这一点的最好方法可能是使用包含标记:http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags。基本上,它是一个依赖于另一个模板的自定义标记,类似于RoR部分。详细信息可以在我提供的链接中找到,但您基本上需要做的是

  1. 在你的一个应用程序中创建一个名为"templatetags“的包,并在该包中创建一个模块。以foo_tags.py为例,
  2. 将以下模板添加到foo_tags.py中:

从django导入模板register = template.Library()

  • Write您的定制标记,它实现generate_some_html。让它接受调用者的上下文:

@register.inclusion_tag('relative/path/to/some/template.html',takes_context=True) def foo_tag( context ):photo = context'photo‘#循环父模板中的变量form =context’form‘#为相对的/path/ to /some/Template.html设置#context所需的进一步计算可以在这里#完成...return locals()

  • 使用relative/path/to/some/template.html.

  • Add {% load foo_tags %}中的foo_tag返回的上下文到父模板。您可能应该将此标记放在靠近顶部的位置,就像将导入放在.py文件的顶部附近一样。

  • 在父模板中使用新的自定义标记:

{%用于照片中的照片%} {% foo_tag %} {% endfor %}

票数 0
EN

Stack Overflow用户

发布于 2011-12-22 17:35:58

Django不像RAIL那样支持AJAX,但它让你从一开始就可以选择任何你想使用的库。

您可以通过创建custom widgets和使用form media来做您想做的事情。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2460014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档