Django Wars [Parte 12]: Exibindo informações do jogador na página dos crimes

O Django Wars foi idealizado e desenvolvido no Django 1.4. Algumas funcionalidades aqui descritas podem não funcionar ou funcionar de forma diferente em outras versões do Django

Criamos a página de crimes mas “esquecemos” de listar informações do usuário nesta página, para ficar mais fácil dele saber seu status.
Novamente, com o Django é muito simples de passar informações da view para o template, ainda mais neste caso que já salvamos o perfil do usuário e já o associamos a uma conta de usuário (Django Wars [Parte 06]: Criando um perfil de jogador).

Vamos no arquivo views.py alterar a view crimes para fazê-la passar as informações do modelo Player para o template crimes.html:

def crimes(request):
    if not request.user.is_authenticated():
        return redirect(logar)
    return render_to_response("crimes.html", {"player": request.user.get_profile(),
                                              "vida": request.user.get_profile().vida * 10}) #para exibir o total de vida do usuario

Lembrando, request.user é o usuário logado.
O usuário logado possui o método get_profile() que retorna um objeto do tipo Player.

Fazendo algumas simples alterações no template crimes.html teremos isso:

<div class="container">
            <p>
                Informações do usuário:
                Nível {{  player.nivel }}
                |
                Energia {{  player.energia_atual }}/{{ player.energia }}
                |
                Raiva {{ player.raiva_atual }}/{{ player.raiva }}
                HP: {{ player.hp }}/{{ vida }}
            </p>

            <!--lista de crimes que podem ser cometidos-->
            <p>Roubar carrocinha de cachorro quente. (1 de energia) (nível mínimo: 1) <a href="/cometer/1">cometer crime</a></p>
            <p>Roubar doce de criança. (2 de energia) (nível mínimo: 2) <a href="/cometer/2">cometer crime</a></p>
            <p>Roubar casa. (3 de energia) (nível mínimo: 3) <a href="/cometer/3">cometer crime</a></p>
            <p>Roubar banco. (4 de energia) (nível mínimo: 5)(requer arma) <a href="/cometer/4">cometer crime</a></p>
            <p>Roubar coisas secretas. (6 de energia) (nível mínimo: 8)(requer arma)(requer armadura) <a href="/cometer/5">cometer crime</a></p>

        </div> <!-- /container -->

O código atual do projeto pode ser visto aqui:
https://github.com/frenetic/django-wars

One thought on “Django Wars [Parte 12]: Exibindo informações do jogador na página dos crimes

  1. Poderia ajudar, atualizando o código, mesmo que seja só em comentários para o método correto de usar o get_profile na versao 1.7+?

    Atualmente esse descrito aqui só funciona se eu estiver usando a mesma versão do tutorial e encontrei dificuldades em concluir em versões mais novas. Mesmo assim, até aqui tem sido muito útil pra aprender. 😀

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *