4

初めての鶺鴒 django サイトを構築しています。私のサイトにはブログの部分があり、URL に公開日を追加したいと考えています。現在、ページを追加するとURLはexample.com/blog/[slug]になりますが、example.com/blog/2015/11/19/[slug]にしたいです

私のブログページ:

class BlogPage(Page):
    main_image = models.ForeignKey(
        'wagtailimages.Image',
        null=True,
        blank=True,
        on_delete=models.SET_NULL,
        related_name='+'
    )
    date = models.DateField("Post date")
    intro = models.CharField(max_length=250)
    body = RichTextField(blank=True)

    search_fields = Page.search_fields + (
        index.SearchField('intro'),
        index.SearchField('body'),
    )

    content_panels = Page.content_panels + [
        FieldPanel('date'),
        ImageChooserPanel('main_image'),
        FieldPanel('intro'),
        FieldPanel('body'),
    ]
4

2 に答える 2

0

これを wagtail と統合できるかどうかはわかりませんが、django で達成できる方法の例を次に示します。

  1. モデルを更新して、次のスラッグを自動的に生成します (: タイトルに基づく) blog/models.py:
from django.db import models
from django.utils.text import slugify
from django.utils.timezone import now

class Post(models.Model):
    # your attributes
    date = models.DateTimeField(default=now())
    title = models.CharField(max_length=250)
    slug = models.SlugField()

    def save(self):
        """
        Generate and save slug based on title
        """
        super(Post, self).save()
        self.slug = slugify(self.title)
        super(Post, self).save()
  1. ブログ アプリに新しい URL を追加します ( blog/urls.py) :
url(r'^(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/(?P<day>[0-9]{2})/(?P<slug>[\w-]+)$', views.post_details)
  1. で投稿を取得するビューを定義しますblog/views.py
def post_details(request, year, month, day, slug):
    post = Post.objects.get(slug=slug, date__year=year, date__month=month, date__day=day)
    # do what you want with this post
于 2015-11-19T22:53:00.840 に答える