Django Holen Sie sich absolute URL für statische Dateien

In Django, wenn ich benutze:

{{ request.build_absolute_uri }}{% static "img/myimage.jpg" %} 

Es produziert: ' http://myurl.com//static/img/myimage.jpg '. Dies führt zu einem Fehler.

Wie kann ich die Doppelschrägstriche entfernen?

Die STATIC URL ist:

 STATIC_URL = '/static/' 

Aber ich glaube nicht, das erste '/' zu entfernen wäre eine gute Idee.

3 Solutions collect form web for “Django Holen Sie sich absolute URL für statische Dateien”

Die build_absolute_uri Methode erstellt ein absolutes uri für die aktuelle Seite. Das bedeutet, dass, wenn Sie auf zB ' http://myurl.com/login/ ' sind, die resultierende vollständige URL ' http://myurl.com/login//static/img/myimage.jpg ' sein würde.

Verwenden request.get_host() stattdessen request.get_host() (optional zusammen mit request.scheme für das URL-Schema) oder verwenden Sie vorzugsweise das Sites-Framework , um eine Template-Variable auf die aktuelle Site-Domain zu setzen. Die Methode get_host() hat einige Probleme bei Proxies.

Die Methode get_host() gibt die aktuelle Domain ohne Pfad zurück.

Nicht ganz sicher, was du fragst, aber da die {% statische ..%} nur Hinzufügen / statisch / an die Vorderseite deines Pfades, die du spezifiziert hast, kannst du einfach das selber machen:

 {{ request.build_absolute_uri }}static/img/myimage.jpg 

Nicht sehr modular, aber dann wieder die meiste Zeit brauchst du keinen direkten Zugriff auf die volle URL, da es einfach an sie anhängt, was auch immer du bist, wenn du es als ein src für ein html-Objekt verwende.

build_absolute_uri nimmt den Standort als Argument an, das das Doppelschrägstrich behandelt. Leider können Sie keine Argumente über die Django-Vorlagensprache übergeben.

Sie müssen ein benutzerdefiniertes Template-Tag oder einen Filter build_absolute_uri , der ein Argument für die Funktion build_absolute_uri akzeptiert.

Einer der vielen Gründe, warum ich Jinja bevorzuge, wie ich das gerade machen kann:

 {{ request.build_absolute_uri(static('img/foo.png')) }} 
Python ist die beste Programmiersprache der Welt.