Ich mache Django App, in der ich viele externe HTML-Dateien in die Vorlage einbetten muss. Jede HTML-Datei wird zusammen mit dem Unterverzeichnis, das alle Bilder enthält, in einem eigenen Verzeichnis gespeichert. Die Dateistruktur:Externe HTML-Datei in Django
Abstract1
Pictures
image1.png
image2.png
abstract1.html
Ich verwende ein benutzerdefiniertes Template-Tag zum Einbetten (siehe unten). Mein Problem: Die HTML-Dateien werden geladen, aber verknüpfte Ressourcen (z. B. img) funktionieren nicht ordnungsgemäß (d. H. Sie werden nicht angezeigt). HTML-Dateien verwenden relative URLs, die zusammen mit dem Basispfad der Django-Vorlage eine ungültige URL erzeugen, aber selbst wenn ich fest codierte absolute URLs verwende, bleibt das Problem bestehen. Ich habe das Gefühl, etwas Offensichtliches zu vermissen. Gibt es einen geeigneten (oder nicht richtigen, aber funktionierenden) Weg, um ein solches Problem zu überwinden?
Vorlage
{% load abstracts_extras %}
<!DOCTYPE html>
<html>
<body style="margin-left:10px">
<h2>{{abstract}}</h2>
<b>Authors:</b><br/>
<ul>
{% for author in authors %}
<li>{{author}}</li>
{% endfor %}
</ul>
<p>
<b>Title: </b>{{abstract.title}}
<p>
<hr>
{% include_external filename|add:'.html' %}
</body>
</html>
abstracts_extras
from django.template import Library
register = Library()
def include_external (url):
url = 'file:///' + url
import urllib2
return urllib2.urlopen (url).read()
Ich kann nicht verstehen, warum Ihr Vorlagen-Tag die externen Vorlagen über urllib2 mit einer 'file: ///' URL lädt, sondern nur als lokale Dateien öffnet. –
Ich kann auch nicht verstehen, worüber du verwirrt bist; Ihre statischen Dateien müssen sich an einem Ort befinden, an dem sie vom statischen Server bereitgestellt werden, und die URLs im HTML müssen auf die statische URL verweisen. –