将list_detail.object_list中的链接放入list_detail.object_detail

时间:2011-06-29 04:26:56

标签: django objectlistview

我已经开始使用Django并且正在寻找通用视图。伟大的建筑!嗯,文档很棒,但对于绝对的初学者来说,它有点像unix文档,当你已经知道你在做什么时,它们最有意义。我看了一下,找不到具体的,也就是说,你如何设置一个object_list模板,以便你可以点击渲染屏幕中的一个条目并得到object_detail?

以下是有效的。我问的原因是看我是采取合理的路线还是有更好的,更Djangoish的方式来做这个?

我有一个定义了 unicode 的模型,以便我可以用人类可读的形式识别我的数据库条目。我想点击object_list生成页面中的链接,进入object_detail页面。我知道这样做的一个好方法是创建一个系统,其中细节的url看起来像http://www.example.com/xxx/5/,它将调用数据库中第5行的详细信息页面。所以,我想出了以下内容,我的问题是我是在正确的轨道上吗?

我为列表视图创建了一个模板页面,其中包含以下内容:

<ul>
{% for aninpatient in object_list %}
<li><a href='/inpatient-detail/{{ aninpatient.id }}/'>{{ aninpatient }}</a></li>
{% endfor %}
</ul>

这里,object_list来自list_detail.object_list泛型视图。 for循环遍历对象列表object_list。在每一行中,我在html中创建了一个锚,它引用了所需的href,“/ inpatient-detail / nn /”,其中nn是数据库表中每一行的id字段。显示的链接是 unicode 字符串,因此是可点击的链接。我已经设置了模板,这很好用。

那么,我是朝着正确的方向前进的吗?看起来可以直接扩展它以便能够在模板中放置编辑和删除链接。

是否有利用模型创建详细信息页面的通用视图?我使用来自django.forms的ModelForm帮助器来创建表单对象,这对于创建输入表单非常有用(使用自动验证!哇很酷!),那么是否有类似于创建详细视图页面的内容?

史蒂夫

1 个答案:

答案 0 :(得分:1)

如果你在django&lt; 1.3那么你所做的事情基本上是完美的。这些通用视图非常适合快速创建页面。如果您使用的是django 1.3,则需要使用基于类的通用视图。一旦你掌握了那些他们疯狂的好处。

只有我注意到您应该在模板中使用{%url%}标记而不是硬编码网址。在urls.conf文件中定义名为urls的文件:

url('inpatient-detail/(?P<inpatient_id>\d+)/$', 'your_view', name='inpatient_detail')

并在您的模板中(对于django&lt; 1.3):

<a href="{% url inpatient_detail inpatient_id=aninpatient.id %}">...</a>

在1.3中,有一个新的网址标签可以提高生活质量。