【问题标题】:Django - putting static files inside app folderDjango - 将静态文件放在应用程序文件夹中
【发布时间】:2016-10-19 14:27:26
【问题描述】:

我已经在现有项目中启动了一个 django 应用程序,并且我正在尝试按照项目的模式来组织内容。在其他应用程序中,我看到静态文件在应用程序本身中,例如: 文件路径:appname/static/js/file.js Javascript,模板内:<script src="{% static 'js/file.js' %}"></script>

这适用于其他应用程序。我正在尝试做同样的事情,但呈现的文件 url 给了我一个 404 错误。

我应该检查什么才能使其正常工作?我查看了设置文件,但没有什么特别之处,也没有什么特别之处。

感谢您的帮助

【问题讨论】:

  • 如果您在设置文件中设置了DEBUG=True,页面上的错误消息会显示什么?
  • 找不到'js/file.js'
  • 嗯,这应该不会返回 404 错误,您确定没有任何其他错误消息。您能否提供收到 404 时提供的所有详细信息?
  • 您是否已将您的应用添加到设置中的已安装应用中?
  • @mart0903 请求方法:GET 请求 URL:localhost:8001/static/file.js 引发:django.contrib.staticfiles.views.serve 'js/file.js' 找不到您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。

标签: django


【解决方案1】:

appname/static/ 是 Django 在每个已安装应用程序中查找的默认路径,不需要 settings。确保您的新应用确实在 settings.INSTALLED_APPS 中列出。

由于您在开发服务器上,因此您可能缺少静态文件 URL。确保这是urls.py的末尾:

if settings.DEBUG:
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns
    urlpatterns += staticfiles_urlpatterns()

这将为任何appname/static/ 中的所有文件添加URL 路径/static/

另外,如果您在使用开发服务器时想要映射到 URL 路径的更多目录(不是 appname/static/),则可以使用 static() 像这样添加

if settings.DEBUG:
    from django.conf.urls.static import static
    urlpatterns += static('/pics/', document_root=/var/www/pictures/)

【讨论】:

  • 非常感谢,您的回答比我想知道的还要多!
猜你喜欢
  • 1970-01-01
  • 2017-01-25
  • 2011-06-01
  • 1970-01-01
  • 2012-04-15
  • 2012-02-21
  • 1970-01-01
  • 2016-04-06
  • 2017-07-04
相关资源
最近更新 更多