- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 Django 的新手,开始了一个应用程序,我做了模型, View 、模板,但我想在底部添加某种存档页面的,像这样的http://www.flickr.com/photos/ionutgabriel/3990015411/ .
所以我想列出所有年份,然后列出那一年的所有月份。几个月谁有帖子要链接等没有。我还想翻译月份名称,因为我需要用罗马尼亚语。
到目前为止我所做的是:
在我看来:
def archive(request):
arch = Post.objects.dates('date', 'month', order='DESC')
archives = {}
for i in arch:
tp = i.timetuple()
year = tp[0]
month = tp[1]
if year not in archives:
archives[year] = []
archives[year].append(month)
else:
if month not in archives[year]:
archives[year].append(month)
return render_to_response('blog/arhiva.html', {'archives':archives})
在我的模板中:
{% for years, months in archives.items %}
{{ years }}
{% for month in months %}
<a href="{{ years }}/{{ month }}">{{ month }}</a>
{% endfor %}
<br />
{% endfor %}
这会返回如下内容:
2008 10
2009 10 9
2007 10
但我根本无法对它们进行排序...按年份或任何方式排序,而且我也不知道如何添加所有月份(名称),我希望它们像这样:
2009 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2008 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2007 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
带有关于有条目的月份的链接。
感谢您的帮助!
附注对不起我的英语
LE:也许我以错误的方式提出问题,我知道如何获取日期,但我不知道如何将它们格式化为如下所示:
2009 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2008 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
2007 Ian Feb Mar Apr Mai Iun Iul Aug Sept Oct Noi Dec
所有我可以从 arch = Post.objects.dates('date', 'month', order='DESC')
与
{{ archives }}
在模板中是这样的:
[datetime.datetime(2009, 10, 1, 0, 0), datetime.datetime(2009, 9, 1, 0, 0),
datetime.datetime(2008, 10, 1, 0, 0), datetime.datetime(2007, 10, 1, 0, 0)]
然后我尝试了一个循环:
{% for archive in archives %}
{{ archive }} <br />
{% endfor %}
得到:
2009-10-01 00:00:00
2009-09-01 00:00:00
2008-10-01 00:00:00
2007-10-01 00:00:00
在那之后尝试了这样的事情:
{% for archive in archives %}
{{ archive|date:"Y: m" }} <br />
{% endfor %}
得到:
2009: 10
2009: 09
2008: 10
2007: 10
我被卡住了,不知道如何格式化数据,这样我就可以得到不同的年份和所有的月份,并且只有那些有条目的月份是链接...
有什么想法吗?
提前致谢!
最佳答案
首先,日期时间格式字符串在 django docs 中给出。 .我认为您需要大写字母而不是小写字母“M”。
由于您想要显示一年中的所有 12 个月,即使只有部分有帖子,我们将创建一个 archives
对象以传递给模板。我选择在其中使用字典
[datetime, bool]
对的列表,其中 datetime
代表月份,bool
是 如果该月有帖子,则为真
。下面是我们如何在 View 中构建 archives
对象。
from datetime import date
def archive(request):
arch = Post.objects.dates('date', 'month', order='DESC')
archives = {}
for i in arch:
year = i.year
month = i.month
try:
archives[year][month-1][1]=True
except KeyError:
# catch the KeyError, and set up list for that year
archives[year]=[[date(y,m,1),False] for m in xrange(1,13)]
archives[year][month-1][1]=True
return render_to_response('blog/arhiva.html',
{'archives':sorted(archives.items(),reverse=True)})
在模板中,我们遍历每年的月份,并在适当时显示链接。
{% for year, month_list in archives %}
{{ year }} archives:
{% for month, has_link in month_list %}
{% if has_link %}<a href="/{{ month.year }}/{{ month.month }}/">{% endif %}
{{ month|date:"M" }}
{% if has_link %}</a>{% endif %}
{% endfor %}
{% endfor %}
我还没有检查所有代码,因此可能存在一些错误。最好使用 url template tag对于链接,而不是硬编码 url 格式。我觉得我的答案可能过于复杂,但我花了一些时间打字,所以我不妨与全世界分享。
我没有用过Django的国际化功能,所以实在帮不上翻译的忙。我建议你看看 documentation ,如果有不明白的地方再问一个问题。
话虽如此,如果您只想显示罗马尼亚语的月份,这里有一个丑陋的方法。
首先,将以下行添加到 View 中存档函数的顶部。
rom_months = ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun',
'Iul', 'Aug', 'Sept', 'Oct', 'Noi', 'Dec']
然后将以下行替换到您的 View 中
archives[year]=[[date(y,k+1,1),False,rom] for k, rom in enumerate(rom_months)]
最后将以下内容代入模板
...
{% for month, has_link, rom_month in month_list %}
{% if has_link %}<a href="/{{ month.year }}/{{ month.month }}/">{% endif %}
{{ rom_month }}
...
关于python - 基于 Django 年/月的帖子存档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1645962/
我想用 File::Find 归档所有 txt 文件,删除源文件并删除空目录。 我在使用“$tar->rename( );”重命名文件时遇到困难因为我想从它们的完整路径名中删除它们并仅使用父目录/*.
我试图从一个远程存储库中获取一个目录,但我只想从特定的哈希中获取该文件。如果我使用带有 HEAD 的 git archive 一切正常,但是当我尝试使用特定的哈希时: git archive -v -
无论当前目录如何,我都在尝试归档我的项目。 项目结构 main_folder/ sub1/ sub2/ sub3/ 如果我 cd至 main_folder/sub2/s
我有一个创建 install-tars 的远程裸存储库(无工作目录)。很好用。但是现在我只想为更改的文件创建 tars。我这样试过: git archive --format=tar --prefix
我正在构建自己的 rpm。通常我使用 git archive 从我感兴趣的提交或标签中获取 tarball(假设我放了一个标签 1.0): git archive --format=tgz --pre
如何使用 git archive 创建当前存储库的存档,包括本地未提交的更改? 最佳答案 我知道这是旧的,但我想我找到了解决方案。 运行: stashName=`git stash create`;
当我尝试发布 aab 时,出现此错误。请有人帮助我。我该如何修复它。 点击蓝色链接查看图片 最佳答案 当我使用拖放操作到网络浏览器时,我经常遇到这个错误。 如果我使用页面上的“上传”按钮并使用文件选择
我试图通过使用归档模块从 2 个文件夹中创建 2 个归档。 不幸的是,它无法正常工作,没有任何错误。 我的任务如下所示: tasks: - name: create a tarball of
我不想创建一个没有内部目录结构的“平面”tarball。但我希望顶级文件是“松散的”而不是镜像它们最初所在的目录结构。 考虑: + archives | + data | + site
这个问题在这里已经有了答案: 10年前关闭。 Possible Duplicate: Xcode 4 Archive Version Unspecified 你好, 我正在为 iPad 临时部署归档应
我想将 UIWebView 的当前状态保存到 iPhone SDK 中的磁盘。 我有一个 UIWebView,它加载一个包含大量 JavaScript 的网站。我想保存 UIWebView 状态,维护
存档我的 Mac OS 应用程序时,我收到“通用 Xcode 存档”。我读过,可以通过在任何静态库上将 Skip Install 设置为 YES 来解决此问题,但我没有添加任何静态库。我有两个目标和一
可以使用什么组件或方法来指定文件名列表,然后将它们压缩到单个存档中? 我不需要高级功能或任何东西,但如果我可以将一些文件名添加到字符串列表中,然后将这些文件放入 ZIP 中,那就太好了。 我尝试搜索一
我有一个很大的 tar 文件,我分割了。是否可以使用管道来 cat 并解压文件。 类似于: cat largefile.tgz.aa largefile.tgz.ab | tar -xz 而不是: c
我使用 distZip 任务来创建我的发行版。目前发行版名称为“baseName”-“version”.zip。我想将当前时间戳用作分类器,即构建时间。 我尝试使用 distZip { cla
我正在尝试将 MySQL 查询的输出动态写入存档。这是我的代码: var async = require("async"); var mysql = require("mysql"); var exp
也许是个愚蠢的问题,但我的谷歌不起作用。在我的存储库根目录上执行以下操作: $ hg archive my_archive.tar.gz 给我一个 tar.gz 文件,其中包含一个名为 my_ar
[root@c0002242 lfeng]# tar -zxvf/opt/test/ALLscripts.tar.gz -C/opt/test1 tar:这看起来不像 tar 存档 tar:跳到下一个
我的tree命令返回 tmp `-- t `-- e |-- foo.ps `-- s |-- bar.ps `
在编译DLL时,我遇到了许多undefined reference错误,我认为这可能是由于库之间的循环依赖关系引起的。为了解决这个问题,我一直在尝试使用-(文件-)和--start-group文件--
我是一名优秀的程序员,十分优秀!