Django静态文件将无法加载

Jim*_*Jay 13 python django static django-static

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

我使用django.contrib.auth两个模板创建了一个简单的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"和不加载的包含"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'),
Run Code Online (Sandbox Code Playgroud)

在我的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 = ''
Run Code Online (Sandbox Code Playgroud)

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

krs*_*krs 19

您的问题是您没有在urls.py中收听URL"/ static /"

如果您通过apache或nginx等网络服务器提供应用程序,那么这是正常的,因为Web服务器将处理静态文件本身.

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

到urls.py,最后添加

from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
Run Code Online (Sandbox Code Playgroud)

这样做是为了添加/ static/url,让你为没有web服务器的人提供服务.

这相当于

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

有些人会告诉你,你需要将URL规则包装在"if settings.DEBUG"中以使用dev-only规则,但这根本不需要,实际上我发现这是一个糟糕的建议.

  • 该视图永远不会被命中,因为您的Web服务器已设置为捕获这些视图并提供静态文件,因此无需检查. (2认同)