Creating SEO-friendly URLs for posts
The canonical URL for a blog post detail view currently looks like /blog/1/
. We will change the URL pattern to create SEO-friendly URLs for posts. We will be using both the publish
date and slug
values to build the URLs for single posts. By combining dates, we will make a post detail URL to look like /blog/2022/1/1/who-was-django-reinhardt/
. We will provide search engines with friendly URLs to index, containing both the title and date of the post.
To retrieve single posts with the combination of publication date and slug, we need to ensure that no post can be stored in the database with the same slug
and publish
date as an existing post. We will prevent the Post
model from storing duplicated posts by defining slugs to be unique for the publication date of the post.
Edit the models.py
file and add the following unique_for_date
parameter to the slug
field of the Post
model:
class Post(models.Model):
# ...
slug = models.SlugField...