我想更新舊的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