Preservar estados caixa de seleção na mesma página com os resultados da consulta

StackOverflow https://stackoverflow.com/questions/1093539

  •  11-09-2019
  •  | 
  •  

Pergunta

Eu estou usando Django, e ter uma página estática com um formulário GET, e cerca de 30 caixas de seleção. O usuário seleciona várias caixas, e os cliques de pesquisa, e um resultado de um banco de dados é devolvido para a mesma página em uma tabela. No entanto, todas as caixas foram apagadas, desde HTML é apátrida.

Qual é a solução mais simples para 'lembrar' o estado das caixas de seleção? Eu olhei através do Django docs, mas os exemplos apenas usar uma variável e um IF para uma forma de texto único. Certamente, eu não tenho que verificar se cada caixa de seleção está situado no QueryDict? Além disso, meu formulário foi personalizado criado, em vez de usar django formulários.

Por fim, eu estava planejando usar JSON para a página e só atualizar a tabela, e que iria resolver este problema, mas eu não estou certo se ele iria introduzir muitos mais, por exemplo, botão voltar não funciona para pesquisas anteriores.

Foi útil?

Solução

"Qual é a solução mais simples para 'lembrar' o estado das caixas de verificação?"

transações via Web são apátridas.

Existem várias maneiras comuns para implementar o estado.

  1. Sessões. Se o usuário está logado, eles têm uma sessão. Armazenar o material em sua sessão. A forma que eles POST vai para a sessão. Este pode então ser recuperado, a fim de postar uma forma nova de volta para eles.

  2. Cookies. Sessões usar cookies. Você pode usar cookies manualmente. Você tem duas opções aqui.

    • Coloque as informações caixa de formulário para o cookie. Enviá-lo para baixo com a resposta. Verifique para o cookie em cada solicitação para que você saiba o que semear o formulário com.

    • Coloque uma chave de sessão no cookie. Isto é o que Django faz por você. Não implementar esse mesmo.

  3. cordas de consulta na URL. Você tem as mesmas duas escolhas como com cookies. Quer fazer as configurações de uma string base64 grande de idade, ou passar um ID que está em para a sessão.

Outras dicas

Existem diversas maneiras de solucionar a questão botão voltar (hash tags e outros enfeites anexado a um URL). No entanto, a maneira que eu sempre conseguiu isso é através exatamente isso. Essencialmente, eu iria passar as caixas de seleção como uma matriz em POST e, em seguida, quando você vai para torná-los, basta fazer um loop que vai fazer todas as caixas que você precisa, e verificar contra POST para ver se ele tem sido marcada ou não. Fora isso, eu não sei.

Usando GET? Boa. Acesse as caixas de seleção da mesma forma que você acessar dados TextField.

request.GET [ 'yourfield']

Utilize staments de impressão para inspecionar as informações disponíveis no GET.

imprimir request.GET [ 'yourfield']

Se você estiver usando um objeto Form, então você pode apenas passar o construtor o pedido e ser feito com ele. Se você está fazendo isso manualmente, você vai ter que fazer alguma finangling com a sessão.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top