Ich kann meine statischen Dateien nicht aufrufen. Ich habe verschiedene Einstellungen und Verzeichniskonfigurationen usw. ausprobiert, aber sie werden nur als 404 angezeigt. Ich habe debug_toolbar installiert, damit Sie wissen, dass STATIC_URL meinen Anforderungskontext erreicht.
Verzeichnisstruktur zeigt / static (Ich habe das Verzeichnis auch im Ordner der Mahlzeiten-App abgelegt, und Benutzer, nur um es auszuprobieren.
/mealmate
/mealmate
/meals
/static
/css
/bootstrap.min.css
/templates
/users
Settings.py (einige wichtige Einstellungen, obwohl ich mit einer Vielzahl anderer experimentiert habe):
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')
STATIC_URL = '/static/'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
)
WSGI_APPLICATION = 'mealmate.wsgi.application'
In base.html gerendert
<link rel="stylesheet" href="/static/css/bootstrap.min.css">
Irgendwelche Ideen? Vielen Dank
django
static
http-status-code-404
So ein Typ
quelle
quelle
python manage.py findstatic --verbosity 2 css/styles.css
zu sehen, wo Django nach Ihren statischen Dateien sucht.STATIC_URL
meine Einstellungen zu ändern , es würde nicht funktionieren. Dann hilft mir dieser Befehl, den Ort zu finden. Ich weiß nicht, warum er sich nicht ändern würdeAntworten:
Dies ist die funktionierende Lösung für den statischen / Medien- / Vorlagenzugriff in Django für Windows.
settings.py
import os.path STATIC_ROOT = '' STATIC_URL = '/static/' STATICFILES_DIRS = ( os.path.join('static'), )
quelle
os.path.join('static')
gibt einfach'static'
STATIC_ROOT
Spezifikation ist nicht erforderlich. Und wie @ SławomirLenart betonte, können Sie das loswerdenjoin
und einfach die Zeichenfolge verwenden.Für mich stellte sich heraus, dass dies dadurch verursacht wurde, dass das Debug auf false in gesetzt wurde
settings.py
. Eine Problemumgehung besteht darin, den--insecure
Switch an zu übergebenrunserver
. Die eigentliche Lösung besteht jedoch darin, einen geeigneten Webserver zu verwenden, um die statischen Dateien bereitzustellen. Weitere Informationen finden Sie in den Antworten auf diese Frage .quelle
Wenn Sie dies auf einem Webserver ausführen, kopieren Sie die statischen Dateien in einen öffentlich zugänglichen Ordner? Zum Beispiel:
# web accessible folder STATIC_ROOT = '/home/your_name/www/mealmate/static/' # URL prefix for static files. STATIC_URL = '/static/' # Additional locations of static files STATICFILES_DIRS = ( # location of your application, should not be public web accessible '/home/your_name/website/mealmate/static', ) # List of finder classes that know how to find static files in # various locations. STATICFILES_FINDERS = ( 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', )
Dann können Sie diesen Beitrag Django statische Dateien verwenden und die statischen Dateien mit manage.py in den öffentlich zugänglichen Ordner kopieren
# --link Create a symbolic link to each file instead of copying. # --noinput Do NOT prompt the user for input of any kind. # python manage.py collectstatic -link --noinput
Hoffentlich hilft das!
quelle
www
vswebsite
)?STATIC_ROOT
aus den obigen Kommentaren - führen Sie dies aus
python manage.py findstatic --verbosity 2 css/styles.css
Ich habe meinen statischen Ordner einfach in statische Dateien umbenannt und alles war gut. (Ich bin auf osx + django 1.x)
Die Verwendung des unsicheren Modus kann nicht schaden, wenn Sie sich in einer lokalen Entwicklungsbox befinden. Andernfalls werden möglicherweise immer noch 404 Fehler angezeigt.
python manage.py runserver --insecure
AKTUALISIEREN
tatsächlich in settings.py graben fand die verletzende Linie.
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'staticfiles'), )
quelle
Wenn Sie kürzlich das Debug in der Einstellungsdatei auf false geändert haben. Befolgen Sie diese Prozedur.
Meistens wird die Debug-Einstellung in settings.py als falsch eingestuft. Wenn Sie den Schalter --insecure an runserver übergeben, sollte dies funktionieren. Also, wenn Sie
python manage.py runserver 0.0.0.0:8000
espython manage.py runserver 0.0.0.0:8000 --insecure
stattdessen ändern .Es sollte funktionieren.
quelle
Ich habe einfach das Äquivalent von hinzugefügt
um das zum Laufen zu bringen. Ersetzen
absolute_path_to_project
Sie natürlich Ihren tatsächlichen Pfad und fügen Sie gegebenenfalls den Laufwerksbuchstaben hinzu.quelle
Ich steckte auch im 404-Problem fest, bis mir klar wurde, dass Apache die Anforderungen an das statische Verzeichnis blockiert hatte. Ich habe
python manage.py collectstatic
alle statischen Dateien in das statische Verzeichnis unter meinem Projektstamm kopiert , dh / var / my / site / static . MitAlias /static /var/my/site/static <Directory /var/my/site/static> Require all granted </Directory>
In /etc/httpd/conf/httpd.conf funktioniert es jetzt ordnungsgemäß.
Wenn keine der oben genannten Antworten funktioniert, können Sie Ihre Serverkonfiguration überprüfen.
quelle
Alias /static/ /var/my/site/static
wie er auf docs.djangoproject.com/de/1.11/howto/deployment/wsgi/modwsgi/… steht , und den ersten Aufruf geändert , um/static
das Problem für mich zu beheben. Vielen Dank!Stellen Sie sicher, dass sich Mealmate in Ihrem INSTALLED_APPS befindet
quelle
In meinem Fall musste ich den Server nur erneut ausführen:
python manage.py runserver
quelle
Ich gehe davon aus, dass Sie hier Django1.3 + verwenden.
Zunächst müssen Sie einige weitere Einstellungen definieren:
STATICFILES_FINDERS = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] STATICFILES_DIRS = [ path.join(TOP_DIR, 'static'), ] STATIC_ROOT = path.join(TOP_DIR, 'staticfiles') STATIC_URL = '/static/'
Dies sollte Ihnen helfen, dieses Verzeichnis zu finden.
Außerdem sollten Sie immer auf Ihre statischen Dateien zugreifen, indem Sie
STATIC URL
:<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
quelle
In Django haben Sie noch einen Vorteil für Ihre Vorlagen und Sie können Statiken wie diese verknüpfen, und vielleicht ist dies Ihr Problem!
<script src="{% static 'myapp/bootstrap.min.js' %}"></script> <link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/>
es ist besser zu benutzen
und es ist auch einfacher, mehr darüber zu erfahren, ich verweise auf https://docs.djangoproject.com/de/1.11/intro/tutorial06/
quelle
unten hinzufügen in
setting.py
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ]
quelle
Ich denke, Sie haben es versäumt, die App INSTALLED_APPS in Ihre settings.py-Datei aufzunehmen. Sie sollten "eatmate" hinzufügen.
Danach sind die statischen Dateien und die Befehlsdateien für Django sichtbar. Ich hatte Probleme mit Befehlen und so habe ich es behoben.
quelle
auf Cpanel ist dies eine gute Lösung hier
auf dem Terminal auf dem Panel installieren Sie dj-static static3
pip install dj-static static3
Ersetzen Sie dann in wsgi.py diese Code-Py-Anwendung
from dj_static import Cling application = Cling(get_wsgi_application())
quelle
Ich stand vor dem gleichen Problem. Hier, wie ich den Zugriff auf statische Dateien in der Vorlage löse.
Mein Django-Projekt (Recognition /) -Dateiverzeichnis sieht folgendermaßen aus:
/media /1 i1.jpg i2.jpg .... /static /css /op.css /img /emoji.png /Recognition ... /settings.py /urls.py ... /uploader ... /urls.py /templates /uploader /create.html ...
Meine settings.py sieht folgendermaßen aus:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Recognition', 'uploader', ] STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Mein (Recognition / urls.py) sieht folgendermaßen aus:
urlpatterns = [ path('admin/', admin.site.urls), ... ] if settings.DEBUG: urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Dann greife ich wie folgt auf alle statischen Dateien und Mediendateien in der Vorlage (create.html) zu: Hier ist ein Beispielcode
<!DOCTYPE html> <html> <head> {% block extrahead %} <link rel="stylesheet" type="text/css" href="static/css/op.css"> {% endblock %} </head> <style type="text/css"> .notfound .notfound-404 { ... background-image: url('static/img/emoji.png'); ... } <style> <body> <img src="{{ MEDIA_ROOT }}/media/i1.jpg" class="image_responsive" height="100px" width="100px"> </body>
ODER
Mit diesem Befehl django können Sie sehen, wo django Ihre statischen Dateien sieht. QUELLE
python manage.py collectstatic --help
quelle
Für mich mache ich nichts anderes als manage.py runserver myip: port auszuführen. Dann schalte ich es aus und starte uwsgi neu, die statischen Dateien werden erfolgreich geladen. Ich weiß nicht warum, aber es funktioniert bei mir ...
quelle
in meinem Fall sind meine statischen Dateien in
resources/static
Verzeichnis und ich setze einige Einstellungen wie Schlag insettings.py
Datei:STATICFILES_DIRS = ( os.path.join(BASE_DIR, './resources/static/'), )
und verwenden Sie es in meiner Vorlage wie folgt:
% load static %} <link rel="stylesheet" type="text/css" href="{% static '/plugins/bootstrap/css/bootstrap.css' %}">
Dieser Weg hat bei mir funktioniert.
quelle