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
No post anterior criamos o inventário do usuário.
Porém, apenas fizemos a listagem dos itens que o usuário possui.
Agora, precisamos criar a ação de equipar uma arma e uma armadura.
Vai dar tanto trabalho que estou vendo Carminha se lascar enquanto escrevo 😀
No artigo anterior, definimos no template quais seriam as urls para ativar as armas e armaduras.
Agora, precisamos defini-las no arquivo urls.py.
url(r'^inventario/equipar/armadura/(\d+)/$', djangowars.views.equipar_armadura), url(r'^inventario/equipar/arma/(\d+)/$', djangowars.views.equipar_arma),
Até agora tá muito difícil.
E Max sequestrou Carminha…
Agora precisamos escrever os métodos no views.py.
#pagina para equipar uma armadura
def equipar_armadura(request, item):
if not request.user.is_authenticated():
return redirect(logar)
#verifica se a armadura existe no banco de dados
armadura = get_object_or_404(Armadura, pk=item)
#recupera o usuario que esta logado
player = request.user.get_profile()
#antes de ativar a armadura, tem que ver se o usuario possui essa armadura
if armadura in player.armaduras.all():
#coloca a armadura como ativa
player.armadura_ativa = armadura
player.save() #salva a armadura
#redireciona para a pagina do inventario
return redirect(inventario)
A sequência para equipar uma armadura é simples.
O id da armadura será passado pela URL, definida no urls.py.
Após verificarmos se o usuário está logado ou não, precisamos verificar se a armadura passada existe no banco de dados.
Para isso, usamos a função get_object_or_404.
Depois disso, precisamos verificar se a armadura está no inventário de armaduras do usuário.
Basta fazer um simples if armadura in player.armaduras.all().
Por fim, só marcar a armadura como ativa e partir para o abraço.
O código fonte do projeto pode ser visto aqui:
https://github.com/frenetic/django-wars