Ich liefere statische Inhalte von s3 mit Django-Speichern. Dies funktioniert gut bei Verwendung von Boto 2.5.X. Aber wenn ich Boto & gt; = 2.6 benutze, werden die URLs zu s3-Medien verstümmelt; Eine zusätzliche Variable wird angehängt. Der Unterschied ist, dass das x-amz-Sicherheitstoken angehängt wird (was ich nicht will). Auf die Medien kann nicht über die URL zugegriffen werden.
In meiner settings.py verwende ich
%Vor%Die schlechte URL:
%Vor%Irgendwelche Vorschläge?
Ich habe eine bessere Arbeit basierend auf Django-Speicher (Version 1.1.8), die
ist %Vor% Dadurch wird vermieden, dass django-storage botos generate_url
aufruft und nur den Pfad zur Ressource zusammensticht. Wenn Sie auth verwenden möchten, um statische Dateien zu erhalten, funktioniert das nicht.
Für die Neugierigen:
Statische Dateien auf einigen Teilen meiner Seite funktionierten und andere Teile, wie der Admin, funktionierten nicht. Das war mit dem Unterschied zwischen
verbunden %Vor%und
%Vor% Beide definieren ein Block-Tag {% static %}
, aber sie machen verschiedene Dinge. Dasjenige von static stürzt nur {{STATIC_URL}} ab, dasjenige aus statischen Dateien, das die Methode url
des Speichers verwendet, um die URL für die Datei zu erhalten. Der {% static %}
-Block des Django-Administrators von admin_static
verhält sich wie der staticfiles
1, der den Speicher verwendet.
Durch die Verwendung von {% load staticfiles %}
wurde meine Website überall gleich aufgelöst, wenn AWS_QUERYSTRING_AUTH = False
und / oder AWS_S3_SECURE_URLS = False
. Das wies darauf hin, dass das Problem im Wesentlichen in boto generate_url
lag, dass, wenn querystring_auth
ist False
, die x-amz-security-token
noch gesetzt wurde.