Hora de exibir algum dado! Django nos dá tags de templates embutidas bastante úteis para isso.
Como pode ver, você não pode colocar código Python no HTML, porque os navegadores não irão entender. Eles apenas conhecem HTML. Nós sabemos que HTML é bastante estático, enquanto Python é muito mais dinâmico.
Tags de template Django nos permite transformar objetos Python em código HTML, para que você possa construir sites dinâmicos mais rápido e mais fácil. Uhuu!
No capitulo anterior, nós fornecemos ao nosso template uma lista de postagens e a variável
Para exibir uma variável no Django template, nós usamos colchetes duplos com o nome da variável dentro, exemplo:
{{ posts }}
Tentar fazer isso no seu template blog/templates/blog/post_list.html
(substituia o segundo e o terceiro par de tags < div >< / div >
pela linha {{ posts }}
), salve o arquivo e atualize a página para ver os resultados:
Você pode ver, tudo que temos é:
[<Post: My second post>, <Post: My first post>]
Isto significa que o Django a entende como uma lista de objetos. Lembre-se de introdução ao Python como podemos exibir listas? Sim, com os loops! Em um template Django, fazemos isso da seguinte maneira:
{% for post in posts %}
{{ post }}
{% endfor %}
Tente fazer isso no seu template.
Funciona! Mas nós queremos que eles sejam exibidos como os posts estáticos, como os que criamos anteriormente no capítulo de Introdução a HTML. Nós podemos misturar HTML com tags de template. O conteúdo da tag body
ficará assim:
<div>
<h1><a href="/">Django Girls Blog</a></h1>
</div>
{% for post in posts %}
<div>
<p>published: {{ post.published_date }}</p>
<h1><a href="">{{ post.title }}</a></h1>
<p>{{ post.text|linebreaks }}</p>
</div>
{% endfor %}
Tudo que você põe enrte {% for %}
e {% endfor %}
será repetido para cada objeto na lista. Atualize sua página:
Você notou que dessa vez nós usamos uma notação um pouco diferente {{ post.title }}
ou {{ post.text }}
? Nós estamos acessando os dados em cada um dos campos que definimos no model do Post
. Além disso, |linebreaks
está passando o texto do post por um filtro, convertendo quebras de linha em parágrafos.
Seria bom ver se seu site ainda estará funcionando na internet, certo? Vamos tentar implantar a PythonAnywhere novamente. Aqui está um resumo dos passos...
Primeiro, envie seu código para o Github
$ git status
$ git add -A .
$ git status
$ git commit -m "Added views to create/edit blog post inside the site."
$ git push
Em seguida, faça login em PythonAnywhere e vá para seu Bash console (ou comece um novo) e execute:
`
$ cd my-first-blog
$ git pull
Finalmente, pule para a Web tab e aperte Reload em seu aplicativo web. Sua atualização deve estar live!
Parabéns! Agora vá em frente e tente adicionar um novo post em seu Django admin (Lembre-se de adicionar published_date!), em seguida, atualize a página para ver se o post aparece por lá.
Funciona como mágica? Estamos orgulhosos! Afaste-se do seu computador um pouco, você ganhou uma pausa. :)