为啥更改我的“STATIC_URL”设置会改变我的 Django 应用程序是不是正常工作?

Posted

技术标签:

【中文标题】为啥更改我的“STATIC_URL”设置会改变我的 Django 应用程序是不是正常工作?【英文标题】:Why does changing my "STATIC_URL" setting alter whether my Django application works?为什么更改我的“STATIC_URL”设置会改变我的 Django 应用程序是否正常工作? 【发布时间】:2012-05-25 16:21:19 【问题描述】:

在settings.py中,如果我指定STATIC_URL = 'http://68.164.125.221/',那么客户端可以访问我的网页。但是,不会加载 CSS 和其他静态文件。

另一方面,如果我指定STATIC_URL = '/',则访问我的应用程序的主页会产生此错误。

Page not found (404)
Request Method: GET
Request URL:    http://68.164.125.221/
Directory indexes are not allowed here.
You're seeing this error because you have DEBUG = True in your Django settings file.

有趣的是,我的静态文件现在加载(例如 http://68.164.125.221/main.css 加载),尽管我的应用程序的主页显示此错误。

为什么更改我的“STATIC_URL”设置会切换是加载主页还是加载静态文件?我正在使用静态文件应用程序。

【问题讨论】:

【参考方案1】:

你可能想要STATIC_URL = '/static/'[1];当您将其设置为 / 时,Django 会尝试将 /blah/ 作为静态文件提供服务,而不是将其推送到您的 Django 应用程序。

您遇到的实际错误 Directory indexes are not allowed here. 是指未列出静态文件夹这一事实 - 您必须访问特定文件才能提供该文件。

[1] 或 /media/,或 /files/,或其他任何...只是不是 '/'。

【讨论】:

谢谢,指定STATIC_URL = '/static/' 有效。尽管 Django 试图将 '/blah/' 作为静态文件提供,但你是什么意思?你的意思是我所有的 URL 映射都被视为静态文件? 是的,通过设置STATIC_URL='/' Django 将忽略您的 URL 映射并尝试将所有内容作为静态文件提供。 (假设您使用的是内置开发服务器)

以上是关于为啥更改我的“STATIC_URL”设置会改变我的 Django 应用程序是不是正常工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UIPageViewController 中的页面没有改变?

为啥我的复选框会禁用其他值?

为啥我的 Vue 导航栏更改了路由但没有更新路由器视图?

为啥我的 CAGradientLayer 为所有更改设置动画?

为啥当我更改它的 id 属性时我的按钮没有点击?

为啥 RestKit 会更改我的响应内容类型?