Chciałbym użyć niestandardowych arkuszy CSS i obrazów na moich niestandardowych stronach 404/500, które zrobiłem. Django nie uwzględnia jednak zmiennej STATIC_URL na tych stronach. Jaki byłby najlepszy sposób, aby to osiągnąć? Próbowałem także tworzyć niestandardowy widok 404/500 i renderować dowolny plik HTML, ale nie wyszło tak świetnie.Używanie statycznych plików na niestandardowych stronach 404/500 w Django
Odpowiedz
Oto w jaki sposób to zrobić:
# urls or settings
handler500 = 'mysite.views.server_error'
# views
from django.shortcuts import render
def server_error(request):
# one of the things ‘render’ does is add ‘STATIC_URL’ to
# the context, making it available from within the template.
response = render(request, '500.html')
response.status_code = 500
return response
Warto wspomnieć przyczynę Django nie robi tego domyślnie:
„ Domyślny widok 500 nie przekazuje żadnych zmiennych do szablonu 500.html i jest renderowany z pustym kontekstem, aby zmniejszyć prawdopodobieństwo wystąpienia dodatkowych błędów. "
Sądzę, że będziesz musiał zastąpić domyślną obsługę błędu 404/500. To powinno Ci zacząć:
http://docs.djangoproject.com/en/dev/topics/http/views/#customizing-error-views
w moim Mam pytanie wspomniałem, że już to zrobiłem .. – heri0n
Co stanie się, gdy spróbujesz włączyć opcję '{% load static from staticfiles%}' w widoku niestandardowym? – GordonsBeard
biegnę na ten sam problem i znaleźć rozwiązanie, które nie wymaga niestandardowych szablonów lub ładowarki. Od wersji Django 1.4 można korzystać z tagów get_media_prefix i get_static_prefix, aby uzyskać dostęp do MEDIA_URL i STATIC_URL, gdy nie są one w kontekście.
W moim konkretnym przypadku (Django 1.5) chciałem uzyskać dostęp do statycznych obrazów na mojej stronie 500.html. Ja po prostu dodaje się na początku szablonu
{% load static %}
a następnie otrzymany media i statycznych adresów URL z tych tagów
<img src="{% get_media_prefix %}logo.png">
<img src="{% get_static_prefix %}img/error_pages/error.png" style="height:235px;">
można znaleźć na oficjalnej dokumentacji tutaj: https://docs.djangoproject.com/en/1.5/ref/templates/builtins/#get-static-prefix
- 1. Lokalizacje szablonów i plików statycznych w Django
- 2. Apache nie obsługuje plików statycznych django admin
- 3. Konfigurowanie htaccess do wyświetlania statycznych plików django
- 4. Udostępnianie plików statycznych poziomu root na Heroku z Django?
- 5. Hierarchiczne dane na stronach admin w Django
- 6. Python/Tornado - kompresowanie plików statycznych
- 7. Możliwość hostowania strony django na stronach github?
- 8. Django uzyskać adres URL plików statycznych w widoku
- 9. Używanie niestandardowych metod w filtrze z django-rest-framework
- 10. Używanie niestandardowych czcionek na etykiecie na WinForm
- 11. gunicorn nie obsługuje plików statycznych
- 12. Używanie niestandardowych czcionek w WKWebView
- 13. Jak używać django-cumulus do serwowania plików statycznych?
- 14. Serwer django dev, dodając nagłówki do plików statycznych
- 15. Django. Używanie wielu plików ustawień z Heroku
- 16. Używanie FileFormat v Serde do odczytywania niestandardowych plików tekstowych
- 17. Django nie udostępnia plików statycznych, otrzymując błędy 404
- 18. Problemy z bezpieczeństwem podczas udostępniania plików statycznych za pośrednictwem Django?
- 19. heroku i django: serwer nie ładuje plików statycznych
- 20. Udostępnianie plików statycznych i multimedialnych Django od S3
- 21. Zamęt w Django, plikach statycznych i multimedialnych
- 22. Używanie atrybutów niestandardowych w widokach niestandardowych natomiast w układzie podglądu
- 23. Pomocników Silex i Twig w niestandardowych stronach błędów
- 24. AppSettings z plików niestandardowych
- 25. Zezwalanie użytkownikom na używanie niestandardowych domen dla aplikacji Django na Heroku
- 26. Używanie zmiennych statycznych Constellation C++
- 27. Używanie zmiennych statycznych w adnotacjach Wiosna
- 28. Używanie zmiennych statycznych w maszynce do golenia
- 29. Używanie plików yaml w klejnotach
- 30. pobierania plików statycznych nie powiodło się z 404 w nginx
, więc jak mam odwoływać się do moich plików statycznych? – heri0n
To dodaje 'STATIC_URL' do kontekstu szablonu. Możesz więc używać go tak jak zwykle. – Matt