下周和前一周使用Django 1.3通用视图周存档

时间:2011-06-19 04:53:26

标签: django django-views

我是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),
)

2 个答案:

答案 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升级到更新(更安全)的版本。