Django应用程序没有';无法识别静态文件

Django应用程序没有';无法识别静态文件,django,django-staticfiles,django-settings,static-files,Django,Django Staticfiles,Django Settings,Static Files,我有一个Django应用程序,无法加载静态文件。我的模板已完全加载,但CSS和JS文件无法加载。这是我的档案: zeinab@ZiZi:~/Desktop/MyProject$ tree . ├── __init__.py ├── manage.py ├── myapp │   ├── __init__.py │   ├── lib │   │   ├── decorators.py │   │   ├── dorsa_forms.py │   │   ├── __init__.py │   │

我有一个
Django
应用程序,无法加载静态文件。我的模板已完全加载,但CSS和JS文件无法加载。这是我的档案:

zeinab@ZiZi:~/Desktop/MyProject$ tree
.
├── __init__.py
├── manage.py
├── myapp
│   ├── __init__.py
│   ├── lib
│   │   ├── decorators.py
│   │   ├── dorsa_forms.py
│   │   ├── __init__.py
│   │   └── utils.py
│   ├── log
│   ├── media
│   │   └── admin
│   │       └── background_login
│   │           └── bg1.jpg
│   ├── settings.py
│   ├── static
│   │   ├── calendar.js
│   │   └── inbox.css
│   ├── templates
│   │   ├── 404.html
│   │   ├── base.html
│   │   └── index.html
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
└── requirements.txt

8 directories, 18 files

当我
runserver
时,我会为每个CSS和JS文件获取
“get/static/file/url HTTP/1.1”404 1265
。这里是MyProject/manage.py:

#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
import os
from django.contrib.messages import constants as messages

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',
    'sorl.thumbnail',
    'myapp.lib',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

ROOT_URLCONF = 'myapp.urls'

TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, "templates")],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
            'django.template.context_processors.i18n',
        ],
    },
    },
]

WSGI_APPLICATION = 'myapp.wsgi.application'

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/myapp/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

LOG_PATH = os.path.join(BASE_DIR, 'log')

DEBUG = True
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from .views import default
urlpatterns = [
    url(r'^$', default, name='default'),
    url(r'^admin/', admin.site.urls),
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
application = get_wsgi_application()
这是MyProject/myapp/settings.py

#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
import os
from django.contrib.messages import constants as messages

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',
    'sorl.thumbnail',
    'myapp.lib',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

ROOT_URLCONF = 'myapp.urls'

TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, "templates")],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
            'django.template.context_processors.i18n',
        ],
    },
    },
]

WSGI_APPLICATION = 'myapp.wsgi.application'

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/myapp/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

LOG_PATH = os.path.join(BASE_DIR, 'log')

DEBUG = True
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from .views import default
urlpatterns = [
    url(r'^$', default, name='default'),
    url(r'^admin/', admin.site.urls),
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
application = get_wsgi_application()
这是MyProject/myapp/url.py

#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
import os
from django.contrib.messages import constants as messages

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',
    'sorl.thumbnail',
    'myapp.lib',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

ROOT_URLCONF = 'myapp.urls'

TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, "templates")],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
            'django.template.context_processors.i18n',
        ],
    },
    },
]

WSGI_APPLICATION = 'myapp.wsgi.application'

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/myapp/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

LOG_PATH = os.path.join(BASE_DIR, 'log')

DEBUG = True
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from .views import default
urlpatterns = [
    url(r'^$', default, name='default'),
    url(r'^admin/', admin.site.urls),
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
application = get_wsgi_application()
这是MyProject/myapp/wsgi.py

#!/usr/bin/env python
import os
import sys
if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
    from django.core.management import execute_from_command_line
    execute_from_command_line(sys.argv)
import os
from django.contrib.messages import constants as messages

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',
    'sorl.thumbnail',
    'myapp.lib',
)

MIDDLEWARE_CLASSES = (
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

SITE_ID = 1

AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
)

ROOT_URLCONF = 'myapp.urls'

TEMPLATES = [
    {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, "templates")],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.i18n',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
            'django.template.context_processors.i18n',
        ],
    },
    },
]

WSGI_APPLICATION = 'myapp.wsgi.application'

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_ROOT = '/myapp/static/'

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
MEDIA_URL = '/media/'

LOG_PATH = os.path.join(BASE_DIR, 'log')

DEBUG = True
from django.conf import settings
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from .views import default
urlpatterns = [
    url(r'^$', default, name='default'),
    url(r'^admin/', admin.site.urls),
]
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
application = get_wsgi_application()
编辑1:

我已将MyProject/myapp/URL.py更改为以下内容:

from django.conf import settings
from django.conf.urls import include, url
from django.views import static
from django.contrib import admin
from .views import default

urlpatterns = [
    url(r'^$', default, name='default'),
    url(r'^admin/', admin.site.urls),
    url(r'^public/(?P<path>.*)$', static.serve, {
    'document_root': settings.MEDIA_ROOT
}, name='url_public'),
]
来自django.conf导入设置的

从django.conf.url导入包括
从django.views导入静态
从django.contrib导入管理
从视图导入默认值
URL模式=[
url(r'^$',默认值,name='default'),
url(r“^admin/”,admin.site.url),
url(r'^public/(?P.*)$),static.service{
“document\u root”:settings.MEDIA\u root
},name='url_public'),
]
我最终得到了同样的结果

编辑2:


我还尝试使用
urlpatterns+=static(settings.static\u URL,document\u root=settings.static\u root)
而不是
urlpatterns+=staticfiles\u urlpatterns()
,然后尝试
collectstatic
collectstatic
已成功完成,但仍然打开url返回
“GET/static/file/url HTTP/1.1”404 1265

在您的
url.py
中,您忘记了如何“计算”静态路由文件

与此相反:

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
试试这个:

from django.views import static

urlpatterns = [
    # [...]
    url(r'^public/(?P<path>.*)$', static.serve, {
        'document_root': settings.MEDIA_ROOT
    }, name='url_public'),
]
从django.views导入静态
URL模式=[
# [...]
url(r'^public/(?P.*)$),static.service{
“document\u root”:settings.MEDIA\u root
},name='url_public'),
]
在模板文件中(您没有提供示例),请尝试:

{%load static%}
{%static'calendar.js%}
别忘了使用PyCharm,因为它对这些事情非常有帮助(它可以识别路径,并在模板文件(Ctrl+Space)中自动完成)。

Replace

urlpatterns += staticfiles_urlpatterns()

staticfiles\u urlpatterns()
仅用于调试,以获得静态文件的显示视图。如上面所述,不应用于生产


注意:
STATIC\u ROOT
MEDIA\u ROOT
仅在收集静态数据时使用(
collectstatic
使用
manage.py
)。它指定存储静态和媒体文件的绝对路径(通常是
/var/www/myapp/static
/var/www/myapp/media

当我
运行服务器时,我得到
属性错误:“函数”对象没有属性“服务”
。您是否使用特定版本的
Django
?我的最新版本是
1.11.5
。使用PyCharm,转到“static”一词,然后按“Alt enter”“enter”,这样PyCharm将在URL文件顶部添加正确的“import”,或者手动添加它:
from django.views import static
这就是重点:我使用
static
from
django.conf.urls.static
,正如您在问题中看到的,但您指的是
static
from
django.views
。请在你的答案中提及。@Zeinababasi好的,我已经编辑了我的答案,谢谢你的建议。它有效吗?我是否回答了/让你走上了正确的轨道?我仍然得到了我在问题中提供的
404