Python 如何在Django中生成大量冗余的ajax元素,如复选框和下拉列表?
我已经从stackoverflow那里得到了很多答案,现在我在Django只是通过搜索。现在我希望我的问题也能为大家创造一些价值 在选择Django时,我希望有一些类似于在ROR中执行partials的机制。这将在两方面帮助我。一种是生成重复的索引表单或表单元素,另一种是在往返过程中仅呈现页面的一部分 我已经通过使用taconite和一个简单的URL点击做了一点,但现在我正在尝试更高级。这将集中于表单问题,它归结为如何在辅助对象上迭代 如果我有一个照片实例列表,每个实例都有两个参数,比如大小和数量。我想分别为每个照片实例生成表单元素。但是我有两个列表,我想同时迭代 背景:Python 如何在Django中生成大量冗余的ajax元素,如复选框和下拉列表?,python,django,templates,forms,list,Python,Django,Templates,Forms,List,我已经从stackoverflow那里得到了很多答案,现在我在Django只是通过搜索。现在我希望我的问题也能为大家创造一些价值 在选择Django时,我希望有一些类似于在ROR中执行partials的机制。这将在两方面帮助我。一种是生成重复的索引表单或表单元素,另一种是在往返过程中仅呈现页面的一部分 我已经通过使用taconite和一个简单的URL点击做了一点,但现在我正在尝试更高级。这将集中于表单问题,它归结为如何在辅助对象上迭代 如果我有一个照片实例列表,每个实例都有两个参数,比如大小和数
photos : Photo.objects.all()
及
换句话说,我们有一个照片对象列表和一个基于photo.id的表单目录
以下是模板的抽象:
{% 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 %}
{% for photo in photos %}
{% foo_tag %}
{% endfor %}
{%用于照片中的照片%}
{%include“photoview.html”%}
{%comment%}
因此,这里我想使用photo.id作为索引来获得正确的表单。这样每张照片都有自己的形式。我希望有一个不同的动作,每个表单字段都是唯一的。可能吗?我怎样才能重复这一点?谢谢
这会不会是一个很好的选择?在Python中,当然是form=forms[photo.id],但是这里呢?
{%endcomment%}
数量:{{oi.Quantity}}{{form.Quantity}}}
维度:{{oi.size}}{{form.size}}
{%endfor%}
对于这个简单的案例,我能做些什么。我怎样才能让每个控件都自动更新服务器,而不是使用表单
谢谢
James我不确定我是否理解您的问题,但以下是我认为您想要的,用伪代码表示:
for photo in photos:
form = forms[photo.id]
generate_some_html(photo, form)
实现这一点的最佳方法可能是使用包含标记:。基本上,它是一个依赖于另一个模板的自定义标记,类似于RoR部分。详细信息可以在我提供的链接中找到,但您基本上需要做的是
from django import template
register = template.Library()
生成一些html
。使其接受调用方的上下文:
@register.inclusion_tag('relative/path/to/some/template.html', takes_context=True)
def foo_tag(context):
photo = context['photo'] # loop variable in parent template
form = context['forms'][photo.id]
# further computation that you need in order to setup the
# context for relative/path/to/some/template.html can be
# done here...
return locals()
relative/path/to/some/template.html
中使用foo_标记返回的上下文{%load foo_tags%}
添加到父模板。您可能应该将其放在顶部附近,就像将导入放在.py文件顶部附近一样
{% 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 %}
{% for photo in photos %}
{% foo_tag %}
{% endfor %}
Django不支持像RAIL这样的AJAX,但它允许您从一开始就选择要使用的任何库
通过创建和使用,您可以做您想做的事情。您的问题相当令人困惑。起初,我认为您的问题是关于使用Django模板生成HTMl的,因为您提到希望在RoR中使用类似于partials的内容。为此,您可能需要Django的include标记,但看起来您已经知道了。当我讲到最后的时候,您正在谈论在服务器端处理用户输入。也许我错过了你试图建立的联系,但这些是相当明显的问题。你在做什么?哇,好吧,因为我还没有进入定制标签,这将需要一些必要的消化!非常感谢!我期待着与这些概念作斗争。