【问题标题】:Django - DateTimeField in DetailViewDjango - DetailView 中的 DateTimeField
【发布时间】: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 字段唯一标识?

标签: python django django-urls django-class-based-views


【解决方案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 :)

【讨论】:

    猜你喜欢
    • 2021-01-19
    • 2015-02-04
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-06
    相关资源
    最近更新 更多