Wie kann ich mit dem Fragezeichen in einem Django-URL?
In meinem Django-Anwendung, ich habe eine URL würde ich gerne Spiel, das ein wenig aussieht wie diese:
/mydjangoapp/?parameter1=hello¶meter2=world
Das problem ist hier die '? ' - Zeichen wird vorbehalten, die ein regex-Zeichen.
Habe ich versucht eine Reihe von Möglichkeiten, um mit dieser... Dieser war mein Erster Versuch:
(r'^pbanalytics/log/\?parameter1=(?P<parameter1>[\w0-9-]+)¶meter2=(?P<parameter2>[\w0-9-]+), 'mydjangoapp.myFunction')
Dies war mein zweiter Versuch:
(r'^pbanalytics/log/\\?parameter1=(?P<parameter1>[\w0-9-]+)¶meter2=(?P<parameter2>[\w0-9-]+), 'mydjangoapp.myFunction')
aber noch kein Glück!
Weiß jemand, wie ich entsprechen könnten ein '?' genau in eine Django-URL?
- Der erste Versuch sieht gut aus.
- Dank Bradley... ich werde nochmal versuchen - vielleicht habe ich etwas anderes falsch!
- Wenn ich mich Recht erinnere, den URL dispatcher-Streifen aus der query-string vor dem matching, also ein regex mit einem
r'\?'
in ihm nicht übereinstimmen. Auch dieser Ansatz ist schlecht, weil, auch wenn es funktioniert, ist es nicht nur erforderlich, dass beide Parameter, aber es zwingt auch die Reihenfolge der Parameter. Besserrequest.GET
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht. Sie sollten nicht mit query-string mit URL-Dispatcher.
Sie können alle Werte mit
request.GET
Wörterbuch.urls
Funktion
$
am Ende des regex, es sei denn, Sie möchten match alles in das Verzeichnis "pbanalytics/log/". Auch, wenn ich mich Recht erinnere,request.GET.get()
nimmt einen zweiten parameter, wird der default-Wert, falls der Schlüssel nicht in der Anfrage.$
in der AntwortDjango ' s URL-mustern nur die Pfad-Komponente der URL. Sie versuchen entsprechend auf den querystring, als auch, dies ist der Grund, warum Sie Probleme haben. Ihre erste regex tut, was Sie wollten, außer, dass Sie sollten immer nur passend zu den Pfad-Komponente.
In Ihrer Ansicht können Sie Zugriff auf den querystring über
request.GET
Den
?
Zeichen ist ein reserviertes symbol in regex, ja. Dein Erster Versuch sieht aus wie richtige Flucht davon.Jedoch
?
URL ist auch das Ende des Pfad und der Beginn der Abfrage Teil (wie dieses:protocol://host/path/?query#hash
.Django URL dispatcher nicht lassen Sie Versand-URLs basierend auf der Abfrage-Teil, AFAIK.
Mein Vorschlag wäre das schreiben eines django Ansicht, dass der Versand auf der Grundlage der
request.GET
parameter auf Ihre view-Funktion.Den Weg, das zu tun, was die ursprüngliche Frage war, d.h. catch-all-in-URL, dispatch-var...
oder
Soweit , warum dies erforderlich ist, HOLEN Sie die URL ' s sind auch nicht gerade gute "permalinks" oder gute Präsentation im Allgemeinen für die Kunden und Klienten.
Kunden oft verlangen die url formatiert werden, d.h.
dies ist ein weit mehr lesbare Oberfläche für die end-Benutzer und bietet eine insgesamt bessere Präsentation für den Kunden.