Django-Template-Tag zum Einfügen oder Ersetzen des URL-Parameters

Ist jemand bewusst von einem Django-Template-Tag, der den aktuellen Pfad und Abfrage-String und fügt ein oder fügt einen Abfrage-String-Wert?

ZB eine Anfrage an / some / custom / path? Q = wie + jetzt + braun + cow & page = 3 & filter = person

Der Anruf {% urlparam 'page' 4 %} würde /some/custom/path?q=how+now+brown+cow&page=4&filter=person generieren /some/custom/path?q=how+now+brown+cow&page=4&filter=person .

Das wäre nicht zu schwierig, von vorne zu schreiben, aber da dies wie eine sehr häufige Aufgabe erscheint, würde ich erwarten, dass ein Tag wie dieses eingebaut wird. Doch nach dem Lesen durch die docs und googeln, kann ich nicht scheinen, jemanden zu finden, der so ein Tag veröffentlicht hat.

3 Solutions collect form web for “Django-Template-Tag zum Einfügen oder Ersetzen des URL-Parameters”

Da ich diese Werkzeuge nicht selbst benutzt habe, werde ich dich einfach verweisen:

  • Django-url-tools hat url_params template tag, das zu tun scheint was du willst
  • Django-more-template-tags-and-filters hat einige Helper-Tags für die Manipulation von URLs und Parametern

FYI, ich habe persönlich jsurl Bibliothek für diese Art von url Manipulationen in Javascript verwendet.

Ich hoffe, das hilft.

Hier ist, wie ich es auf einem Django 1.3 Projekt gemacht habe. Wie Sie es erwartete, dieses gebaut zu finden, aber am Ende kodiert es in der Ansicht:

 def remove_url_param(url, params): if not isinstance(params, list): params = [params,] if isinstance(url, unicode): # urlencode doesn't like unicode url = url.encode('utf8') (scheme, netloc, path, query, fragment) = urlparse.urlsplit(url) param_dict = parse_qs(query) for p in params: try: del(param_dict[p]) except KeyError: pass query = urllib.urlencode(param_dict, True) return urlparse.urlunsplit((scheme, netloc, path, query, fragment)) 

Dann habe ich das benutzt, um Basis-URLs zu erstellen:

 page_url_unordered = putils.remove_url_param( request.get_full_path(), ['order', 'ajax'] ) 

Dann in der Vorlage:

 <a href="{{ page_url_unordered }}&amp;order=price">Price</a> <a href="{{ page_url_unordered }}&amp;order=size">Size</a> 

Ich möchte eine Reihe von Paginierungslinks auf einer Suchseite rendern. Die URL enthält mehrere Abfrageparameter (wie in meinem Beispiel). Der Paginierungscode, der die Paginierungsverbindungen macht, muss nicht explizit alle diese Parameter gegeben werden. Djangos Admin scheint dieses Verhalten überall zu haben.

Dies wird durch das Hinzufügen von django.core.context_processors.request zu TEMPLATE_CONTEXT_PROCESSORS (es ist standardmäßig nicht aktiviert). Dies wird eine request zu Ihren Vorlagen hinzufügen, die das HttpRequest Objekt ist .

Von dort aus können Sie {{ request.get_full_path }} , um die aktuelle URL mit der vollständigen {{ request.get_full_path }} zu erhalten und dann Ihre benutzerdefinierte Abfrage an sie anzuhängen.

Wenn Ihre Seite ist /search?q=foo+bar , und Sie wollen einen neuen Link zu /search?q=foo+bar&page=4 , <a href="{{ request.get_full_path }}&page=4">page 4</a>

  • Django templatetags ISO bis heute
  • Django, Template-Kontext-Prozessoren
  • Drucken einer Liste von Personen mit mehr als einem Haus, jedes Haus mit mehr als einer Telefonnummer
  • Django statische Dateien werden nicht mit Standardeinstellung geladen
  • Grundschablone nicht in Django laden
  • Django Vorlagen und MongoDB _id
  • Gibt es einen Weg, um über zwei Listen gleichzeitig in Django zu schleifen?
  • Wie benutzt man django template tag 'url' mit django 1.6?
  • Verwenden Sie slugify in Vorlage
  • Wie markiere ich Formularfelder mit <div class = 'field_type'> in Django
  • Erhöhe eine Variable in Django-Vorlagen
  • Python ist die beste Programmiersprache der Welt.