python - Django 静态文件不会加载

标签 python django static django-static

我是 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"当我访问 url 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 的静态内容。任何人都可以阐明这一点吗?

最佳答案

您的问题是您没有在 urls.py 中的任何地方收听 URL“/static/”

如果您通过网络服务器(如 apache 或 nginx)为您的应用程序提供服务,那么这是正常的,因为网络服务器会自行处理静态文件。

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

到urls.py,在最后添加

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

它的作用是添加/static/url 并让您为没有网络服务器的用户提供服务。

这相当于

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

有些人会告诉您,您需要将 URL 规则包装在“if settings.DEBUG”中才能使用仅限开发人员的规则,但这根本不需要,实际上我发现这是一个糟糕的建议。

关于python - Django 静态文件不会加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10216827/

相关文章:

java - 如何以及在何处使用 Java 中的静态修饰符?

python - Django错误: django. core.exceptions.ImproperlyConfigured:加载MySQLdb模块时出错

python - 我可以在 SQLAlchemy 中将相同的对象两次附加到 InstrumentedList 吗?

python - 如何在django中使用yolov5模型

django - 如何过滤使用扩展模型类字段连接的事件用户

c# - 如何将函数扩展到 Random 类

python - 外部 API RabbitMQ 和 Celery 速率限制

python - 在python paramiko ssh上发送回车键

在 AWS Elasticbeanstalk 上部署后出现 django-oauth-toolkit 'invalid client' 错误

c - 全局静态函数仍在另一个文件中工作