Preservare stati casella di controllo sulla stessa pagina con i risultati della query

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

  •  11-09-2019
  •  | 
  •  

Domanda

sto usando Django, e hanno una pagina web statica con un modulo GET, e circa 30 caselle. L'utente seleziona varie caselle, e clic di ricerca, e di conseguenza da un database viene restituito alla stessa pagina in una tabella. Tuttavia, tutte le caselle di controllo sono stati cancellati, in quanto HTML è senza stato.

Qual è la soluzione più semplice per 'ricordare' lo stato delle caselle di controllo? Ho guardato attraverso Django documenti, ma gli esempi basta usare una variabile e un IF per una singola forma di testo. Sicuramente, non devo controllare se ogni casella di controllo si trova nel QueryDict? Inoltre, il mio modulo è stato personalizzato creato, invece di usare le forme Django.

Alla fine, avevo intenzione di usare JSON per la pagina e aggiornare solo il tavolo, e che avrebbe risolto il problema, ma non sono sicuro se sarebbe introdurre molti di più, ad esempio, di nuovo il pulsante non funziona per le ricerche precedenti.

È stato utile?

Soluzione

"Qual è la soluzione più semplice per 'ricordare' lo stato delle caselle di controllo?"

transazioni Web sono apolidi.

Ci sono diversi modi comuni per implementare lo stato.

  1. Sessioni. Se l'utente è connesso, hanno una sessione. roba Conservare nella loro sessione. La forma che post prosegue nella sessione. Questo può essere recuperato per poter inserire una nuova forma di nuovo loro.

  2. Cookie. Sessioni utilizzano i cookie. È possibile utilizzare i cookie manualmente. Hai due scelte qui.

    • Inserire le informazioni casella di controllo modulo nel biscotto. Invia giù con la risposta. Controllare il cookie in ogni richiesta in modo da sapere cosa seminare il modulo.

    • Mettere una chiave di sessione nel cookie. Questo è ciò che fa per voi Django. Non implementare da soli.

  3. stringhe di query nell'URL. Avete gli stessi due scelte con i biscotti. O fare le impostazioni di un grande vecchio stringa base64 o passare un ID che si trova in per la sessione.

Altri suggerimenti

Ci sono modi per risolvere il problema pulsante Indietro (tag hash e quant'altro allegati a un URL). Tuttavia, il modo in cui ho sempre compiuto questo è attraverso proprio questo. In sostanza, vorrei passare le caselle di controllo come un array in POST e poi, quando si va a farli, basta fare un loop che farà tutte le caselle di cui avete bisogno, e verificare contro POST per vedere se è stata selezionata o meno. Oltre a questo, non lo so.

Utilizzo GET? Buono. Accedere alle caselle di controllo allo stesso modo si accede ai dati TextField.

request.GET [ 'yourfield']

Utilizza staments stampa per controllare le informazioni disponibili in GET.

Stampa request.GET [ 'yourfield']

Se si sta utilizzando un oggetto Form, allora si può solo passare il costruttore la richiesta e da fare con esso. Se stai facendo manualmente, dovrete fare un po 'finangling con la sessione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top