0

我已经开始使用 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 助手来制作表单对象,这对于创建输入表单非常有用(带有自动验证功能!哇,太酷了!),那么有没有类似的东西可以用于创建详细视图页面?

史蒂夫

4

1 回答 1

1

如果您使用的是 django < 1.3,那么您所做的基本上是完美的。这些通用视图非常适合快速创建页面。如果您使用的是 django 1.3,您将希望使用基于类的通用视图。一旦你掌握了这些,它们就会变得非常好。

我唯一需要注意的是,您应该在模板中使用 {% url %} 标签,而不是硬编码 url。在您的 urls.conf 文件中定义命名的 url,例如:

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 标签,可以进一步改善生活。

于 2011-06-29T05:07:23.540 回答