Modificare l'indirizzo in Django middleware
-
12-09-2019 - |
Domanda
Non so se è possibile, ma vorrei aggiungere alcuni parametri alla fine dell'URL tramite middleware. Può essere fatto senza reindirizzare dopo modyfing URL richiesto?
es. utente fa clic: ... / some_link e middleware riscrive a:? ... / some_link par1 = 1 & par2 = 2
Un altro modo è quello di modificare reponse e sostituire tutti i link HTML ma non è qualcosa che mi piacerebbe fare.
Grazie
Soluzione
Credo che questo dipende dal vostro problema e che cosa esattamente si sta cercando di fare.
Non è possibile modificare l'URL senza reindirizzare l'utente, in quanto non è possibile modificare l'URL di una pagina, senza una ricarica. Fondamentalmente un redirect è una risposta dicendo che l'utente di andare avanti, non c'è modo di cambiare realmente l'URL. Si noti che, anche se lo si fa in qualcosa di simile a JavaScript che, fondamentalmente, fare lo stesso come un redirect, in modo che non può essere fatto lato client o server.
Penso che potrebbe aiutare se si spiegarci perché è necessario passare queste informazioni tramite l'URL. Perché non memorizzare i dati nella sessione?
Credo che si potrebbe aggiungere i dati per l'oggetto di richiesta, ma che non aggiunge all'URL.
Altri suggerimenti
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
Che cosa stai cercando di realizzare e perché in questo modo?
Si può fare quello che vuoi nel middleware. Si ha accesso a l'oggetto di richiesta, è possibile ottenere l'URL e reindirizzare ad uno nuovo, se si desidera.
La mia domanda sarebbe, perché vorresti fare questo? Se è necessario mantenere informazioni relative alla richiesta, il posto giusto per farlo è nella sessione.