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

È stato utile?

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.

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