2009-09-22 7 views
3

Je ne sais pas si c'est possible mais j'aimerais ajouter quelques paramètres à la fin de l'URL en utilisant le middleware. Peut-il être fait sans redirection après modyfing demandé URL?Modifier l'adresse dans le middleware Django

ie. utilisateur clique: .../some_link et middleware Récrit à: .../some_link par1 = 1 = 2 & PAR2

Autre moyen est de modifier et de remplacer tous les Reponse lien HTML, mais ce n'est pas quelque chose que je J'aime faire.

Merci

Répondre

1

Je pense que cela dépend vraiment de votre problème et de ce que vous essayez de faire exactement.

Vous ne pouvez pas modifier l'URL sans rediriger l'utilisateur, car vous ne pouvez pas modifier l'URL d'une page sans recharger. Fondamentalement, une redirection est une réponse indiquant à l'utilisateur d'aller de l'avant, il n'y a aucun moyen de réellement changer l'URL. Notez que même si vous le faites dans quelque chose comme JavaScript vous faites essentiellement la même chose qu'une redirection, donc cela ne peut pas être fait côté client ou serveur.

Je pense que cela pourrait être utile si vous nous expliquez pourquoi vous devez transmettre cette information via l'URL. Pourquoi ne pas stocker des données dans la session?

Je suppose que vous pouvez ajouter les données à l'objet de requête mais cela ne l'ajoute pas à l'URL.

+0

Merci, enfin c'est clair pour moi. – yezooz

4
class YourRedirectMiddleware: 

    def process_request(self, request): 
     redirect_url = request.path+'?par1=1&par2=2' 
     return HttpResponsePermanentRedirect(redirect_url) 

ce que vous essayez d'accomplir et pourquoi cette façon?

+0

mais il redirige ce que je voudrais éviter. Le résultat devrait être quelque chose comme oldschool passant session_id dans l'URL entre les demandes. Je suis forcé de le faire de cette façon:/ – yezooz

+0

Vous devriez vous méfier de cette solution, car si vous avez des données POST, il sera perdu lors de la redirection. –

+0

expliquer vos besoins, je ne comprends pas pourquoi vous voulez le faire de cette façon – zalew

0

Vous pouvez faire ce que vous voulez dans le middleware. Vous avez accès à l'objet de requête, vous pouvez obtenir l'URL et la rediriger vers une nouvelle si vous le souhaitez. Ma question serait, pourquoi voulez-vous faire cela? Si vous devez conserver des informations sur la requête, l'endroit approprié est la session.