我已经从stackoverflow得到了很多答案,因为我已经进入了Django,仅仅是通过搜索。现在,我希望我的问题也能为每个人创造一些价值。
在选择Django时,我希望有一些类似于ROR中处理偏导函数的机制。这将在两个方面帮助我。其中之一是生成重复的索引表单或表单元素,以及在往返过程中仅呈现页面的一部分。
我已经通过简单的URL点击使用taconite完成了一些工作,但现在我正在尝试更高级。这将集中在形式问题上,归根结底就是如何迭代第二个对象。
如果我有一个照片实例列表,每个实例都有几个参数,假设是大小和数量。我想分别为每个照片实例生成表单元素。但是我有两个要同时迭代的列表。
上下文:
photos : Photo.objects.all()和
forms = {}
for photo in photos:
forms[photo.id] = PhotoForm()换句话说,我们得到了一个照片对象列表和一个基于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 %} 对于这个简单的案例,我能做些什么?如何才能让每个控件都自动更新服务器,而不是完全使用表单?
谢谢!
詹姆斯
发布于 2010-03-17 14:29:52
我不确定我是否理解了您的问题,但以下是我认为您想要的,用伪代码表示:
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部分。详细信息可以在我提供的链接中找到,但您基本上需要做的是
从django导入模板register = template.Library()
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.
{% load foo_tags %}中的foo_tag返回的上下文到父模板。您可能应该将此标记放在靠近顶部的位置,就像将导入放在.py文件的顶部附近一样。
{%用于照片中的照片%} {% foo_tag %} {% endfor %}
发布于 2011-12-22 17:35:58
Django不像RAIL那样支持AJAX,但它让你从一开始就可以选择任何你想使用的库。
您可以通过创建custom widgets和使用form media来做您想做的事情。
https://stackoverflow.com/questions/2460014
复制相似问题