为什么不是';django开发服务器正在查找我的静态文件

为什么不是';django开发服务器正在查找我的静态文件,django,Django,我真的很困惑。我已经设置了一个django站点,我的设置都是正确的,但是当我运行服务器时,它找不到文件。有关必要的代码,请参见下文 settings.py: INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.messages',

我真的很困惑。我已经设置了一个django站点,我的设置都是正确的,但是当我运行服务器时,它找不到文件。有关必要的代码,请参见下文

settings.py:

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.admin',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django_comments',
    'best_schools',
    'debug_toolbar',
]
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',
    'debug_toolbar.middleware.DebugToolbarMiddleware',
]
# --snip--
STATIC_URL = '/static/'
STATIC_ROOT = os.path.dirname(os.path.dirname(
    os.path.abspath(__file__))) + '/static/'
目录结构:

jonathan at k-nine ~/Sites/tbs_django (master tbs_django) [02:04 pm]
 -> ls ./
best_schools/  db.sqlite3  license.txt  manage.py*  README.md  requirements.txt  static/  tbs/  templates/
ipython控制台:

In [1]: from tbs import settings

In [2]: settings.STATIC_ROOT
Out[2]: '/home/jonathan/Sites/tbs_django/static/'

In [3]: settings.STATIC_URL
Out[3]: '/static/'
manage.py findstatic
的输出甚至看不到我的静态目录:

jonathan at k-nine ~/Sites/tbs_django (master tbs_django) [02:06 pm]
 -> manage.py findstatic --verbosity 2 custom-admin.css
/home/jonathan/Sites/tbs_django/manage.py
No matching file found for 'custom-admin.css'.

Looking in the following locations:
  /home/jonathan/.virtualenvs/django-tbs/lib/python3.6/site-packages/django/contrib/admin/static
  /home/jonathan/.virtualenvs/django-tbs/lib/python3.6/site-packages/debug_toolbar/static
我在我的URL.py中有这样的内容:
urlpatterns+=static(settings.static\u URL,document\u root=settings.static\u root)


奇怪的是,当我运行
manage.py runserver--nostatic
时,它工作得非常好。为什么django找不到我的静态文件?我正在运行Django 1.10.2。

尝试在url.py中添加这些行并使用collectstatic

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

python manage.py collectstatic

尝试在url.py中添加这些行并使用collectstatic

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

python manage.py collectstatic

通常认为静态文件属于某个应用程序,并且位于该应用程序的
static/
目录中。这就是Django自己的应用程序的工作原理,也是管理员工作的原因

例如,best_schools应用程序的静态文件应该在

'/home/jonathan/Sites/tbs_django/best_schools/static/best_schools/'
(是的,这是最好的学校的两倍。您必须在url.py中放入任何内容,runserver才能找到它们


然后,当您进入生产环境并让文件由Django以外的某个web服务器提供服务时,您可以运行
python manage.py collectstatic
,它会搜索所有已安装的应用程序,并将文件复制到配置好的静态根目录中,您可以使用web服务器为其提供服务。

通常的想法是静态文件属于某个应用程序,并位于该应用程序的目录中,位于
static/
。这就是Django自己的应用程序的工作原理,也是管理员工作的原因

例如,best_schools应用程序的静态文件应该在

'/home/jonathan/Sites/tbs_django/best_schools/static/best_schools/'
(是的,这是最好的学校的两倍。您必须在url.py中放入任何内容,runserver才能找到它们


然后,当您进入生产环境并让文件由Django以外的某个web服务器提供服务时,您可以运行
python manage.py collectstatic
,它搜索所有已安装的应用程序,并将文件复制到配置好的静态根目录中,您的静态文件位于web服务器的哪个位置?它们应该位于应用程序中的static/目录中,并且仅在生产环境中(通过manage.py collectstatic)移动到static\u根目录中。管理员的静态文件工作正常吗?管理员工作正常。静态文件都位于上面输出中显示的Static/目录中。我正在四处移动静态文件,看看是否能让django看到它们我会写一个答案,你知道的。我把静态文件放错地方了。谢谢当你得到书面答案时,我会接受。你的静态文件在哪里?它们应该位于应用程序中的static/目录中,并且仅在生产环境中(通过manage.py collectstatic)移动到static\u根目录中。管理员的静态文件工作正常吗?管理员工作正常。静态文件都位于上面输出中显示的Static/目录中。我正在四处移动静态文件,看看是否能让django看到它们我会写一个答案,你知道的。我把静态文件放错地方了。谢谢当你得到书面答复时,我会接受的。