我是Django的新手,我想知道如何使用周归档通用视图获取模板中的下一周和上周链接。对于archive_month通用视图,模板上下文中有next_month和previous_month对象,但archive_week泛型视图中没有。
models.py
class Day(models.Model):
day = models.AutoField(primary_key=True)
date = models.DateField()
description = models.TextField()
def __unicode__(self):
return str(self.day)
urls.py
week_info = {
"queryset" : Day.objects.order_by('-date'),
"date_field" : "date",
}
urlpatterns = patterns('journal.views',
(r'^(?P<year>\d{4})/(?P<week>\d{2})/$', date_based.archive_week, week_info),
)
答案 0 :(得分:1)
您需要两个链接:如果当前周为33,则前一个应为32,接下来为34 你可以从extra_context字典中的url中获取当前周吗?字典在通用视图代码本身的周变量之后迭代,这意味着您应该直接在urls.py中访问它(我的怀疑)
url只捕获数字,但视图使用字符串(date_based.py中的第201行):
try:
tt = time.strptime(year+'-0-'+week, '%Y-%w-%U')
date = datetime.date(*tt[:3])
except ValueError:
raise Http404
time.strptime
对字符串进行操作,这意味着我们需要将它们转换为整数,添加或减去一个,并将这些新值保存为额外上下文中的键。所以我会将以下内容添加到你的week_info词典中:
"next_week" : int(week) + 1,
"prev_week" : int(week) - 1,
由于这些链接是其他基于日期的视图的args,因此可以将它们保留为整数。然后从新传递的上下文变量构建链接。
希望这会有所帮助;)
答案 1 :(得分:1)
您可以使用date filte r格式化年份和周数,并使用它来获取下一周和上周的链接:
{% if previous_week %}
{% with prev_week_year|date:"Y" prev_week=previous_week|date:"W" %}
<a href="{% url <NAME_OF_YOUR_VIEW> prev_week_year prev_week %}">
See Previous Week</a>
{% endwith %}
{% endif %}
{% if previous_week and next_week %} | {% endif %}
{% if next_week %}
{% with next_week_year|date:"Y" next_week=next_week|date:"W" %}
<a href="{% url <NAME_OF_YOUR_VIEW> next_week_year next_week %}">
See Next Week</a>
{% endwith %}
{% endif %}
您还需要为自己的观点命名。
不要忘记将Django升级到更新(更安全)的版本。