【发布时间】:2011-11-22 06:48:59
【问题描述】:
更新:使用 Dreamhost 提供的 Django 1.2.1 和 Python 2.5.2。
我在 Django 教程的最后一部分遇到问题,其中 urls.py 被更改为使用通用视图。更改代码后,页面上出现 404,甚至索引也停止工作。
我已经检查了所有模板以查看是否是问题所在,但我删除了任何 poll 实例并将其替换为 object。我还附上了 index/object_list 的模板。
我在 Dreamhost 上运行它,我使用视图设置的静态 url 运行良好。
urls.py
from brsplash.models import Poll
from django.conf.urls.defaults import *
from django.contrib import admin
from django.views.generic import *
admin.autodiscover()
info_dict = {
'queryset': Poll.objects.all(),
}
urlpatterns = patterns('',
(r'^$', 'django.views.generic.list_detail.object_list', info_dict),
(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', info_dict),
url(r'^(?P<object_id>\d+)/results/$', 'django.views.generic.list_detail.object_detail', dict(info_dict, template_name='brsplash/results.html'), 'poll_results'),
(r'^(?P<poll_id>\d+)/vote/$', 'brsplash.views.vote'),
)
urlpatterns += patterns('',
(r'^admin/', include(admin.site.urls)),
poll_list.html
{% if object_list %}
<ul>
{% for object in object_list %}
<li><a href="{{ object.id }}/">{{ object.question }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available</p>
{% endif %}
【问题讨论】:
-
为什么不使用基于类的通用视图? Django 1.3 中的旧式通用视图只是为了与针对早期版本的 Django 构建的代码兼容。当然,这是假设您实际上使用的是 Django 1.3,如果您正在阅读教程,我不确定您为什么不会这样做。
-
抱歉,Dreamhost 只有 Django 1.2.1 和 Python 2.5.2,否则我会使用较新的 1.3 方式。
-
在结果/
url(r'^(?P<object_id>\d+)/results/ $',之后注意正则表达式中的空间,我怀疑你的意思是有那个空间并且会'prolly 生成 404 -
您可以在 Dreamhost 上升级到 Django 1.3:blog.oscarcp.com/?p=167
-
@jturnbull:很好的发现。 melkore:如果你对这件事有任何选择,你应该使用 Django 1.3。针对旧代码库开始新项目绝不是一个好主意。无论如何,您迟早都需要升级,这只会让这一切变得更加困难。如果您刚刚开始学习 Django,那就更是如此。根据 1.2.1 工作,您获得的任何新知识都会立即过时。
标签: django django-templates django-views