url-generator für python
Weiß ich über urllib
und urlparse
, aber ich möchte sicherstellen, dass ich nicht das Rad neu erfinden.
Mein problem ist, dass ich dabei bin, zu Holen eine Reihe von urls aus der gleichen Domäne über die urllib
Bibliothek. Ich wollen im Grunde in der Lage sein zum generieren von urls zu verwenden (als strings) mit unterschiedlichen Pfaden und query params. Ich hatte gehofft, dass Sie etwas haben könnte, eine syntax wie:
url_builder = UrlBuilder("some.domain.com")
# should give me "http://some.domain.com/blah?foo=bar
url_i_need_to_hit = url_builder.withPath("blah").withParams("foo=bar") # maybe a ".build()" after this
Grundsätzlich möchte ich in der Lage sein, zu speichern, Voreinstellungen übergeben bekommen zu urlparse.urlunsplit
statt ständig Trübung bis Sie den code, indem in der ganzen Tupel jedes mal.
Macht soetwas existieren? Machen die Leute Zustimmen, es lohnt sich werfen zusammen?
InformationsquelleAutor Tom | 2009-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Immer noch nicht ganz sicher was du suchst... Aber ich werde give it a shot. Wenn Sie nur schauen, um eine Klasse, die halten Ihre default-Werte und so, es ist einfach genug, um Ihre eigene Klasse und die Verwendung von Python Magie wie str. Hier ist ein Kratzer-Beispiel, das (suboptimale):
Wenn Sie auf der Suche nach mehr von der Builder-Design-Muster, die Wikipedia-Artikel hat eine vernünftige Python-Beispiel (sowie Java).
urlparse.urlunparse
eher als hard-code Satzzeichen.Die Annahme dieser Antwort ziemlich spät... am Ende habe ich wirklich nicht brauchen etwas in dieser Art... aber das ist das, was ich suchte. Es ist offensichtlich, es wurde nichts gebaut in Python so, aber das war alles, was ich Frage mich. (Ich wusste, ich konnte einfach code es mir). Mein einziger Kommentar ist, wie S. Lott... ich würde verwendet haben, urlparse in der Implementierung der Klasse... danke ewall.
Um zu vermeiden, hard-Codierung die URL-escaping der Parameter, die ist, was ich kam hier für die, die Sie verwenden können
urllib.urlencode
zum Beispiel:params = urllib.urlencode({'user': self.request.user.pk, 'token': m.hexdigest()})
Beachten Sie, dass das obige Beispiel nicht mit Schema (https/http), der # - hash, der sich möglicherweise am Ende wird, und umfasst einen trailing-slash, wenn es gibt keinen Weg, und eine nachfolgende ? wenn es keine Parameter. Es scheint, wie python hätte etwas sauber zu Komponieren, das ohne alle schreiben Ihre eigenen.
InformationsquelleAutor ewall
Sind Sie schlägt eine Erweiterung http://docs.python.org/library/urlparse.html#urlparse.urlunparse , würde Ersatz in der 6-item-Tupel?
Redest du so etwas?
Ist, dass was Sie sind das vorschlagen?
?
Sowas?
Es scheint nicht Komplex genug, um zu wringen Ihre Hände über. In der Tat, wenn Sie mehr als 25 Zeilen code in es, hast du vermutlich zu viel.
Oh ja, die __call___ () - Methode ist, was ich versucht habe, zu denken. Ich mag es...
InformationsquelleAutor S.Lott
Möchten Sie vielleicht in Erwägung ziehen, ein Blick auf furl weil könnte es sein eine Antwort auf Ihre Bedürfnisse.
InformationsquelleAutor neutrinus
Ich denke, Sie wollen http://pythonhosted.org/uritools/.
Beispiel aus den docs:
Den split-Wert ist ein benanntes Tupel, nicht eine normale Liste. Es ist zugänglich durch den Namen oder index:
Machen Sie eine Kopie änderungen vornehmen:
InformationsquelleAutor Scott Smith