Verificar o checkbox na views.

442 views
Skip to first unread message

Luiz Henrique

unread,
Oct 13, 2011, 4:42:16 PM10/13/11
to Django Brasil
Boa noite pessoal, tudo bem?

Estou querendo verificar se uma checkbox está ativa ou não no meu
formulário, estou trabalhando com sessão, só que quando tento obter o
valor da checkbox, é como se zerasse minha sessão e ai volta pra tela
de login.

Estou tentando obter o valor da checkbox assim:
request.session['otimizada'] = request.POST.['otimizada']
request.session['todos_reg'] = request.POST.['todos_reg']

Retornei o valor de todos o campos do Post (request.POST.copy()) pra
views e imprimi na tela, pelo o que percebe, quando a checkbox está
ativa funciona, porque ela aparece nos campos do POST, agora quanto
ela está desativada que dá o problema, porque o nome dela nem aparece
nos campos do POST.

Não sei se estou usando o comando certo, procurei na internet não
consegui achar, só achei exemplos trabalhando com módulos.

Logo abaixo tem os códigos que estou usando.

O formulário é o seguinte:
<form action="." method="post" name="inventario">{% csrf_token %}
<table border="0" cellspacing="0"
cellpadding="0">
<tr>
<td width="97">
<span
class="formulario">Denominação:</span>
</td>
</tr>
<tr>
<td>
<input type="text"
class="cons_input" name="denominacao"/>
</td>
</tr>
<tr>
<table width="265px">
<tr>
<td>
<input type="checkbox"
class="cons_checkbox" name="otimizada" {% if otimizada == '1' %}
CHECKED{% endif %}/> <span class="formulario">Otimizada</span>
</td>
<td align="right">
<input type="checkbox"
class="cons_checkbox" name="todos_reg" {% if todos_reg == '1' %}
CHECKED{% endif %}/> <span class="formulario">Todos os registros</
span>
</td>
</tr>
</table>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" class="btn2"
value="Consultar" />
<input type="hidden" name="limpar"
value="nao_limpar" />
</td>
</tr>
</table>
</form>

E a views é a seguinte:

def cons_prod_descricao(request):
request.session['msg'] = ''
request.session['tipo_msg'] = '0'

try:
if (request.method == 'POST'):
#Essa é a parte com problema.
request.session['otimizada'] = request.POST.['otimizada']
request.session['todos_reg'] = request.POST.['todos_reg']

#Monta variaveis para o render_to_response
logado = request.session['logado']
otimizada = request.session['otimizada']
todos_reg = request.session['todos_reg']
msg = request.session['msg']
tipo_msg = request.session['tipo_msg']

dados_template = {'logado': logado,
'otimizada': otimizada,
'todos_reg': todos_reg,
'msg': msg,
'tipo_msg': tipo_msg,
'MEDIA_URL': settings.MEDIA_URL}

#Defini qual template vai ser receber os dados e renderizar.
return render_to_response('app/cons_prod_descricao.html',
dados_template)

except KeyError:
request.session['logado'] = False

#Monta variaveis para o render_to_response
logado = request.session['logado']

dados_template = {'logado': logado,
'MEDIA_URL': settings.MEDIA_URL}

#Defini qual template vai ser receber os dados e renderizar.
return render_to_response('app/cons_prod_descricao.html',
dados_template)

caio

unread,
Oct 13, 2011, 4:57:12 PM10/13/11
to django...@googlegroups.com
otimizada = 'otimizada' in request.POST

-- caio


2011/10/13 Luiz Henrique <shar...@gmail.com>

--
Django Brasil em Google Groups <http://groups.google.com.br/group/django-brasil>
Associe-se à Python Brasil e suporte nossa comunidade! <http://associacao.python.org.br/>

Yuri Piratello

unread,
Oct 13, 2011, 5:59:09 PM10/13/11
to django...@googlegroups.com
O POST é como um dicionário (me corrijam caso eu esteja errado), por isso para acessar algum registro nele faça da seguinte maneira:

request.POST['otimizada']
request.POST['todos_reg']

Então seu código ficaria assim:

request.session['otimizada'] = request.POST['otimizada']
request.session['todos_reg'] = request.POST['todos_reg']

Ou pode fazer como o caio disse acima 

=]

Atenciosamente;

Yuri Zanola Piratello
=====================


2011/10/13 caio <caio....@gmail.com>

Luiz Henrique

unread,
Oct 14, 2011, 10:35:27 AM10/14/11
to Django Brasil
Obrigado Caio, deu certo aqui.

On Oct 13, 5:57 pm, caio <caio.ari...@gmail.com> wrote:
> > otimizada = 'otimizada' in request.POST
>
> -- caiohttp://github.com/caioariede
>
> 2011/10/13 Luiz Henrique <sharkl...@gmail.com>

Luiz Henrique

unread,
Oct 14, 2011, 10:39:00 AM10/14/11
to Django Brasil
Yuri, era isso que eu estava fazendo, mas quando o campo não estava
ativado gerava um erro, não sei qual erro, porque nem aparecia, só
voltava pra tela de login.

O jeito que o Caio falou funcionou perfeitamente.

Mesmo assim obrigado!

On Oct 13, 6:59 pm, Yuri Piratello <yuri.pirate...@gmail.com> wrote:
> O POST é como um dicionário (me corrijam caso eu esteja errado), por isso
> para acessar algum registro nele faça da seguinte maneira:
>
> request.POST['otimizada']
> request.POST['todos_reg']
>
> Então seu código ficaria assim:
>
> request.session['otimizada'] = request.POST['otimizada']
> request.session['todos_reg'] = request.POST['todos_reg']
>
> Ou pode fazer como o caio disse acima
>
> =]
>
> Atenciosamente;
>
> Yuri Zanola Piratello
> =====================
> about me:http://about.me/yuripiratello
> blog:http://yuri-piratello.blogspot.com
> gtalk: yuri.pirate...@gmail.com
> twitter:http://twitter.com/yuri_zpira
>
> 2011/10/13 caio <caio.ari...@gmail.com>
>
>
>
>
>
>
>
> >  otimizada = 'otimizada' in request.POST
>
> > -- caio
> >http://github.com/caioariede
>
> > 2011/10/13 Luiz Henrique <sharkl...@gmail.com>

César Frias

unread,
Oct 14, 2011, 10:52:22 AM10/14/11
to django...@googlegroups.com
Yuri o POST é como se fosse um dicionário sim, porém ele é imutável.




Att,
César Frias
Linux user: #506849
Twitter: twitter.com/cesarFrias

Yuri Piratello

unread,
Oct 14, 2011, 1:11:04 PM10/14/11
to django...@googlegroups.com
Mas tem uma forma de fazer um "clone" de um dicionário imutável não tem? Lembro de ter visto em algum lugar...

Atenciosamente;

Yuri Zanola Piratello
=====================

Elyézer Mendes Rezende

unread,
Oct 14, 2011, 1:14:14 PM10/14/11
to django...@googlegroups.com
O método que cria esse clone é o copy [1]

[1] http://docs.python.org/library/stdtypes.html?highlight=copy#dict.copy

2011/10/14 Yuri Piratello <yuri.pi...@gmail.com>:

--
Elyézer Mendes Rezende
http://elyezer.com

Reply all
Reply to author
Forward
0 new messages