Welcome to Part 7 of our Django web development with Python tutorial.
After we define our model, we're ready to define our blog/urls.py
file, create any template we need and then we'll be done, right?! Well, traditionally, we'd also need to modify the blog/views.py
before being done, but nope, we're going to employ some further Django magic and skip that part entirely with some generic views. Thus, in our blog/urls.py
:
from django.conf.urls import url, include from django.views.generic import ListView, DetailView from blog.models import Post urlpatterns = [ url(r'^$', ListView.as_view( queryset=Post.objects.all().order_by("-date")[:25], template_name="blog/blog.html")), ]
Here, we are making use of the ListView, which is used mainly for a page that presents a list of something to the user. In our case, the list is going to be the last 25 blog posts ordered by date, descending (hence the - sign). Rather than writing an SQL-specific statement, we just reference our model. Because we have the backend database chosen in our settings, Django knows how to build the query in the background.
Next, we need a blog HTML page, which we've called blog/templates/blog/blog.html
as per the template_name
in the blog/urls.py
file:
{% extends "personal/header.html" %} {% block content %} {% for post in object_list %} <h5>{{ post.date|date:"Y-m-d" }}<a href="/blog/{{post.id}}"> {{ post.title }}</a></h5> {% endfor %} {% endblock %}
Here, since it's a list, we're going to iterate through it. We'll display the post.date, in Y-m-d fashion. We then specify a dynamic URL for the specific blog itself so a user could click the link to head here. The url will lead to /blog/<postid>
, and the text for the URL will be the title of the blog. We are able to reference any of the elements we've defined in the blog/models.py
file.
In the next tutorial, we're going to be discussing databases and migrations.
Download the entire site's code for this tutorial here: Part 7