我想更新旧的Django项目(Django的,在最后1.4工作)使用基于类的通用视图(在Django的1.5)Django的TemplateSyntaxErrors基于类的观点
下面用来工作
模板:
{% block content %}
{% for month in date_list %}
<h2><a href="{% url coltrane_entry_archive_month year,month|date:"b" %}">{{ month|date:"F" }}</a></h2>
<h2>Blah</h2>
{% endfor %}
{% endblock %}
urls.py
urlpatterns = patterns('django.views.generic.date_based',
...
(r'^(?P<year>\d{4})/$', 'archive_year', dict(entry_info_dict,make_object_list=True), 'coltrane_entry_archive_year'),
(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'),
...
)
但是当我ü pdated的urls.py使用泛型类
class ArticleYearArchiveView(YearArchiveView):
queryset = Entry.objects.all()
date_field = "pub_date"
make_object_list = True
allow_future = True
urlpatterns = patterns('',
...
url(
r'^(?P<year>\d{4})/$',
ArticleYearArchiveView.as_view(),
name='coltrane_entry_archive_year'
),
url(
r'^(?P<year>\d{4})/(?P<month>\w{3})/$',
dates.MonthArchiveView.as_view(
template_name='coltrane/entry_archive_month.html',
queryset=Entry.objects.filter(status=Entry.LIVE_STATUS),
date_field='pub_date'),
name="coltrane_entry_archive_month"
),
...
)
以下TemplateSyntaxError开始出现:
无法解析某些字符:一年|,月||日期: “B”
我可以呈现模板,并检查什么正在通过使用到coltrane_entry_archive_month如下:
{% for month in date_list %}
{{ year }}
{{ month|date:"b" }}
{% endfor %}
我没有ñ注意{{year}}被渲染为'Jan. 1,2013'而不是'2013',它与url中的正则表达式匹配。这我不明白。
Futher然后我试图呈现如下:
{% for month in date_list %}
{% url "coltrane_entry_archive_month" "2013","apr" %}
{% endfor %}
没有喜悦,此时TemplateSyntaxError是:
无法解析余数: ' “四月”' 从““2013 “,”apr“'
在Django中,泛型类视图和url似乎都是很大的主题,所以任何指针都会非常受欢迎!
' “{%URL coltrane_entry_archive_month年月|日期:” B “%}”'应该是' '{%URL coltrane_entry_archive_month年月|日期: “B” %}'' – karthikr 2013-04-10 19:13:40
karthikr - 谢谢。我已经接受了下面的答案,但在此感谢您的意见和解决方案。 – jayuu 2013-04-10 20:07:18