Django - DetailView 中的 DateTimeField

Posted

技术标签:

【中文标题】Django - DetailView 中的 DateTimeField【英文标题】:Django - DateTimeField in DetailView 【发布时间】:2018-02-26 04:46:31 【问题描述】:

如何在使用 DetailView 的 url 中显示 DateTimeField 年份?

这是我的代码:

models.py

publish = models.DateTimeField(default=timezone.now)

views.py

class UpdatesDetail(DetailView):
    template_name = 'Upadtes/detail.html'
    model = Post

urls.py

url(r'(?P<slug>[-\w]+)$', UpdatesDetail.as_view(), name='updates-detail'),

现在我的网址看起来像这样:127.0.0.1/this-is-just-test,但我希望我的网址看起来像这样127.0.0.1/2017/09/17/this-is-just-test。我该怎么做?

感谢您的帮助!

【问题讨论】:

DetailView 继承自 SingleObjectMixin。我建议你阅读这里的文档:docs.djangoproject.com/en/1.11/ref/class-based-views/… 即使这不能直接解决你的问题,它也会帮助你。 为什么要在 url 中包含日期?你会用日期来识别文章吗?还是文章由 slug 字段唯一标识? 【参考方案1】:

您可以为yearmonthday 以及slug 传递参数

url(r'(?P<year>[0-9]4)/(?P<month>[0-9]2)/(?P<day>[0-9]2)/(?P<slug>[-\w]+)$', AktualnosciDetail.as_view(), name='aktualnosci-detail'),

在 html 中

<a href="% url 'aktualnosci-detail' year=post.publish.year month=post.publish.month day=post.publish.day slug=post.slug %"

【讨论】:

感谢您的回答,但我如何在href 中使用它?这是我的 html &lt;a href="% url 'aktualnosci-detail' slug=post.slug %" 我正在为此更新答案。等等。 @xaos_xv,我已经更新了我的答案,现在看看?如果您有任何问题,请告诉我。 感谢它的工作几乎完美,但月份是 9 而不是 09 和一天一样。 但是您可以使用 na 进行操作,如果您从中获取视图,您可以将其与 (publish__month=month) 进行比较,应该没有任何问题。【参考方案2】:

我在official documentation 中找到了很好的例子。 Pozdrawiam :)

【讨论】:

以上是关于Django - DetailView 中的 DateTimeField的主要内容,如果未能解决你的问题,请参考以下文章

将 Pk 或 Slug 传递给 Django 中的通用 DetailView?

Django 3:将数据添加到 DetailView

访问中间件值以测试Django DetailView

Django:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数

Django DetailView 模板显示所有字段的显示值

将表单添加到 Django DetailView 错误消息:不允许的方法(POST)