мой локальный сервер Python не знает, что мой статический файл CSS для запуска - PullRequest
0 голосов
/ 26 июня 2019

Я вставил файл css в мой проект django (в «статическом» каталоге) и установил адрес этого css в мой файл index.html (в каталоге «template») в соответствии с django, но мой css не работает!

это мои адреса:

myproject / myapp / templates / html / index.html

myproject / myapp / static / css / index.css

это мой HTML:

{% load static %}

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

<head lang="eng">
<link rel="stylesheet" type="text/css" href={% static "css/index.css" %}/>
</head>

<body onload="myFunction()">
----some code----
</body>
</html>

это мой файл settings.py:

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '83lia*q_t0q%=hm==3#s*h$=s5(4!l44s698r326zgpz*v4csl'

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'myproject.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
        '././myapp/templates/html',

        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'myproject.wsgi.application'

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'myapp/static')
]

это мой urls.py:

from django.contrib import admin
from django.urls import path , include
admin.autodiscover()

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.url')),
]

этоФайл url.py в каталоге myapp:

from django.urls import path , include
from . import views

urlpatterns = [
    path('', views.index, name = 'index'),

]

, и это мой veiws.py тьфу:

from django.shortcuts import render
from django.http import HttpResponse

def index(request):
 return render(request, 'index.html',{})

, но мой css не работает! Я получаю ошибку 404!пожалуйста, помогите мне полностью запустить myproject

Ответы [ 3 ]

0 голосов
/ 26 июня 2019

попробуем

сначала создайте папку в корневом каталоге dir с именем static, затем создайте другую папку внутри call css, затем поместите ваши файлы.

в settings.py вы должны иметь. удалите static_root и поместите STATICFILES_DIRS

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

в ваш HTML-файл положить

<link rel="stylesheet" type="text/css" href={% static "css/index.css" %}/>

должно работать.

Если вы хотите узнать больше о разнице между static_root и staticfiles_dirs, пожалуйста, проверьте этот ответ для другого пользователя. statict_root против staticfiles_dis

0 голосов
/ 27 июня 2019

Единственное, что я не вижу в ответах и ​​в ваших испытаниях, - это код для обслуживания статических файлов во время разработки на urls.py. Хотя это может не решить вашу проблему, стоит попробовать. Вы можете прочитать больше об этом здесь

global urls.py

from django.conf import settings
from django.contrib import admin
from django.urls import path , include
from django.conf.urls.static import static
admin.autodiscover()

urlpatterns = [
    path('admin/', admin.site.urls),
    path('myapp/', include('myapp.url')),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
0 голосов
/ 26 июня 2019

Попробуйте использовать:

{% static "css/index.css" %}

в

<link rel="stylesheet" type="text/css" href={% static "myapp/index.css" %}/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...