Django templates
Time to display some data! Django gives us some helpful built-in template tags for that.
You see, in HTML, you can't really write Python code, because browsers don't understand it. They know only HTML. We know that HTML is rather static, while Python is much more dynamic.
Django template tags allow us to transfer Python-like things into HTML, so you can build dynamic websites faster. Cool!
Display post list template
In the previous chapter we gave our template a list of posts in the posts
variable. Now we will display it in HTML.
To print a variable in Django templates, we use double curly brackets with the variable's name inside, like this:
blog/templates/blog/post_list.html
Try this in your blog/templates/blog/post_list.html
template. Open it up in the code editor, and replace everything from the second
to the third with {{ posts }}
. Save the file, and refresh the page to see the results:
As you can see, all we've got is this:
blog/templates/blog/post_list.html
This means that Django understands it as a list of objects. Remember from Introduction to Python how we can display lists? Yes, with for loops! In a Django template you do them like this:
blog/templates/blog/post_list.html
Try this in your template.
It works! But we want the posts to be displayed like the static posts we created earlier in the Introduction to HTML chapter. You can mix HTML and template tags. Our body
will look like this:
blog/templates/blog/post_list.html
Everything you put between {% for %}
and {% endfor %}
will be repeated for each object in the list. Refresh your page:
Have you noticed that we used a slightly different notation this time ({{ post.title }}
or {{ post.text }}
)? We are accessing data in each of the fields defined in our Post
model. Also, the |linebreaksbr
is piping the posts' text through a filter to convert line-breaks into paragraphs.
One more thing
It'd be good to see if your website will still be working on the public Internet, right? Let's try deploying to PythonAnywhere again. Here's a recap of the stepsβ¦
First, push your code to GitHub
command-line
PythonAnywhere command-line
(Remember to substitute with your actual PythonAnywhere subdomain, without the angle-brackets.)
Works like a charm? We're proud! Step away from your computer for a bit β you have earned a break. :)
Last updated
Was this helpful?