【发布时间】:2013-03-02 15:54:45
【问题描述】:
我正在学习 Django,目前我正在按照Polls 教程松散地进行一个项目。
现在我正在尝试转换为通用视图,这就是我遇到问题的地方:
news/models.py
[...]
class News(models.Model):
id = models.IntegerField(primary_key=True, editable=False)
category = models.CharField(max_length=50L)
title = models.CharField(max_length=200L)
#rss_summary = models.CharField(max_length=2000L)
rss_summary = models.TextField(max_length=2000L)
#body_text = models.CharField(max_length=5000L)
body_text = models.TextField(max_length=5000L)
post_date = models.DateTimeField()
class Meta:
db_table = 'news'
def __unicode__(self):
return self.title
news/urls.py
from django.conf.urls import patterns, url, include
from django.views.generic import DetailView, ListView
from news import views
from news.models import News
urlpatterns = patterns('',
url(r'^$',
ListView.as_view(
queryset=News.objects.order_by('-post_date'),
context_object_name='allnews',
template_name='news/news.html'),
name='news_index'),
[...]
新闻/模板/news/news.html
[...]
{% for item in allnews %}
<h1 class="news"><a href="{% url 'news_index' item.id %}">{{item.title}}</a></h1>
[...]
{% endfor %}
现在我的问题是:我想使用 {% url 'foo' id %} 语法使用通用视图(如 ListView 或 详细视图。我怎样才能做到这一点?我为 ListView 声明了一个名称,但我不知道如何指定 allnews.id。
使用上面的代码我得到错误
NoReverseMatch at /news/ Reverse for 'news_index' with arguments 未找到“(7L,)”和关键字参数“{}”。
有趣的是,“7L”是最新消息的id...
【问题讨论】:
标签: django django-views url-routing django-1.5