Django static files won't load

2019-06-23 18:37发布

我是一个新手,Django的工作对我的第一个项目,并具有静态文件的问题。

我已经使用创建了一个简单身份验证系统django.contrib.auth :由两种模板mysite/templates/index.htmlmysite/templates/registration/login.html 。 我在全球静态内容mysite/static ,我希望能够在所有的应用程序渲染的所有模板访问。

mysite/templates/index.html包含<img src="{{ STATIC_URL }}pics03.jpg"/>其呈现为"static/pics03.jpg"和负载细当我访问链接localhost:8000/

mysite/templates/registration/login.html包含<img src="{{ STATIC_URL }}pics03.jpg"/>其也呈现为"static/pics03.jpg"和当我访问URL不加载"localhost:8000/accounts/login/"

在我的urls.py我有:

urlpatterns = patterns('',
   url(r'^$', 'mysite.views.home'), # plays index.html template
   url(r'^accounts/login/$', 'django.contrib.auth.views.login'),

在我的settings.py我有:

PROJECT_DIR = os.path.dirname(__file__)

STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR,'static'),
)  

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATIC_URL = '/static/'

STATIC_ROOT = ''

我是Django的应该寻找在STATICFILES_DIRS全球静态内容的印象,但即使我在那里更改URL为绝对路径的静态文件夹,并没有找到login.html的静态内容。 任何人都可以摆脱任何这光?

Answer 1:

你的问题是,你在你的urls.py的arent听URL“/静态/”无处

如果你通过像Apache或nginx的Web服务器为你的应用程序,那么这是正常的,因为Web服务器将处理静态文件本身。

对于开发Django带有一个内置的静态服务器

到urls.py文件,在最后加

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()

这样做是添加/静态/ URL,让你成为那些没有网络服务器。

这相当于

url(
    regex=r'^static/(?P<path>.*)$', 
    view='django.views.static.serve', 
    kwargs={'document_root': settings.STATIC_ROOT,}
)

有些人会告诉你,你需要用一个“如果settings.DEBUG”的URL规则才能使用的DEV-规则,但这个心不是在所有的需要,实际上我觉得这是一个不错的建议。



Answer 2:

您是否正在使用中的runserver构建或者您服务使用Apache或类似的,当有麻烦? 我挣扎着这一点。 我按照文档: https://docs.djangoproject.com/en/dev/howto/static-files/

当你准备部署第二部分是关键。 您需要定义一个静态根(这将是空开始),然后运行manage.py collectstatic命令将静态文件从整个项目转移到该文件夹。 然后你就可以从那里为他们服务。



Answer 3:

是否改变STATIC_ROOT=''STATIC_ROOT='/'的帮助?

在我看来,唯一的区别是, static/pics03.jpg (相对路径)在主页上存在,但不会对其他。

绝对路径/static/pics03.jpg存在两种情况。 如果改变STATIC_ROOT没有帮助,只是增加一个/到URL的开始。



文章来源: Django static files won't load