2011-06-29 28 views
0

我已经开始使用Django并且正确地使用通用视图。伟大的建筑!那么,这些文档是很棒的,但对于绝对的初学者来说,它有点像unix文档,当你已经知道你在做什么时,它们最有意义。我仔细研究过,无法找到它,也就是说,如何设置一个object_list模板,以便您可以单击渲染屏幕中的条目并获取object_detail?把链接放在list_detail.object_list到list_detail.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 helper来创建表单对象,这非常适合创建输入表单(带有自动验证!太酷了!),那么是否有类似于创建详细视图页面的东西?

史蒂夫

回答

1

如果你在Django的< 1.3那么你在做什么是基本完善。这些通用视图对于快速创建页面非常有用。如果您使用的是django 1.3,则需要使用基于类的通用视图。一旦你掌握了那些他们非常好的东西。

唯一需要注意的是,您应该在模板中使用{%url%}标记,而不是使用硬编码网址。在您的urls.conf文件(县)定义了一个名为网址,如:

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

,并在您的模板(Django的< 1.3):

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

在1.3一个新的URL标签可改善生活更。

+0

啊,非常有趣。我来自PHP,硬编码很自然。尽管我不知道该怎么问,但我非常感谢你明白我在问什么。 – kd4ttc

+0

答案可在http://stackoverflow.com/q/6564068/820321 感谢大家。对相关问题的评论让我能够弄清楚这一点。没有你,不可能做到这一点! – kd4ttc