更新:使用Dreamhost提供的Django 1.2.1和Python 2.5.2。
我遇到了Django教程最后一部分的问题,其中urls.py被更改为使用通用视图。更改代码后,我在页面上获得404,甚至索引也停止工作。
我已经浏览了所有模板以查看是否存在问题,但我删除了任何轮询实例并将其替换为对象。我还附加了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 %}
答案 0 :(得分:4)
Django 1.3引入了基于类的通用视图,它将取代这种基于函数的方法(参见documentation page顶部的注释),所以也许最好使用它们。
使用基于类的方法,您的新详细信息页面网址将如下所示:
from brsplash.models import Poll
...
from django.views.generic import ListView
urlpatterns = {'',
url(r'^$', ListView.as_view(model=Poll)),
...
}
这种方法可以在part 4 of the tutorial中找到。
N.B。:我倾向于不将template_name
参数传递给as_view
,因为正如文档中所述:
ListView通用视图使用名为&lt; app name&gt; /&lt; model name&gt; _list.html的默认模板
答案 1 :(得分:1)
您可以在Dreamhost上升级到Django 1.3:blog.oscarcp.com/?p=167 - jturnbull 9月22日9:54
这解决了我遇到的urls.py问题。一旦我升级到1.3.1并更改了代码以反映它,我的页面又回来了。