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】:您可以为year
、month
和day
以及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 <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:将其转换为 DetailView - 使用来自 URL 的两个参数的视图函数