98 votes

Django Fichiers statiques 404

Je n'arrive pas à faire apparaître mes fichiers statiques. J'ai essayé divers paramètres et configurations de répertoires, etc., mais ils n'apparaissent que sous la forme de 404. J'ai installé debug_toolbar et je sais donc que STATIC_URL atteint mon contexte de requête.

La structure du répertoire montre /static (j'ai également placé le répertoire à l'intérieur du dossier de l'application repas, et des utilisateurs, juste pour essayer.

/mealmate
    /mealmate
    /meals
    /static
        /css
             /bootstrap.min.css
    /templates
    /users

Settings.py (quelques paramètres importants bien que j'ai expérimenté avec une variété d'autres) :

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'

Dans le rendu de base.html

    <link rel="stylesheet" href="stackoverflow.com/static/css/bootstrap.min.css">

Des idées ? Merci

1voto

Wesley Benicio Points 19

Changer la variable DEBUG en True dans vos paramètres.

la méthode runserver ne cherche les statiques que si le débogage est activé, sinon, elle cherchera dans l'url STATIC_ROOT

0voto

Omar Alvarado Points 48

Je pense que vous avez oublié de mettre l'application INSTALLED_APPS dans votre fichier settings.py, vous devez ajouter "mealmate".

INSTALLED_APPS = (
    'mealmate',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

Après cela, les fichiers statiques et de commande seront visibles par django. J'avais des problèmes avec les commandes et c'est de cette façon que je les ai résolus.

0voto

Sur Cpanel, c'est une bonne solution aquí

sur le terminal sur cpanel installer dj-static static3

pip install dj-static static3

puis dans wsgi.py remplacer ce code application py

from dj_static import Cling

application = Cling(get_wsgi_application())

0voto

Harshit Mahajan Points 113

J'ai rencontré le même problème. Voici comment je résous le problème de l'accès aux fichiers statiques dans le modèle.

Le répertoire de mon projet Django (Recognition/) ressemble à ceci :

/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
    ...

Mes paramètres.py ressemblent à ceci :

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')

Mes (Recognition/urls.py) ressemblent à ceci :

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)

Ensuite, j'accède à tous les fichiers statiques et aux fichiers médias dans le modèle (create.html) comme ceci : Voici un exemple de code

<!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>

OU

Vous pouvez utiliser cette commande django pour voir où django voit vos fichiers statiques. SOURCE

python manage.py collectstatic --help

0voto

li vector Points 1

Pour moi, je ne fais rien d'autre que de lancer manage.py runserver myip:port. Ensuite, je l'éteins et je redémarre uwsgi, les fichiers statiques se chargent avec succès. Je ne sais pas pourquoi mais ça marche pour moi...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X