- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Django 2.2。来自 Django 管理静态文件 documentation :
If you use django.contrib.staticfiles as explained above, runserver will do this automatically when DEBUG is set to True. If you don’t have django.contrib.staticfiles in INSTALLED_APPS, you can still manually serve static files using the django.views.static.serve() view.
This is not suitable for production use! For some common deployment strategies, see Deploying static files.
For example, if your STATIC_URL is defined as /static/, you can do this by adding the following snippet to your urls.py:
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
# ... the rest of your URLconf goes here ...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
Note
This helper function works only in debug mode and only if the given prefix is local (e.g. /static/) and not a URL (e.g. http://static.example.com/).
Also this helper function only serves the actual STATIC_ROOT folder; it doesn’t perform static files discovery like django.contrib.staticfiles.
我的解读
STATIC_ROOT
中的文件(这是真的吗?)debug = True
STATIC_URL = '/static/'
DEBUG
设置为 True 并且我按照文档中的说明使用和设置静态文件应用程序时,如果我执行 python manage.py runserver
来启动本地服务器, 将自动处理静态文件的服务(是吗??)我的问题
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
添加到您项目的 urls.py
究竟有什么作用?STATIC_ROOT
目录本地提供静态文件?为了测试这个理论,在运行 collectstatic
之后,我删除了 static
目录以查看静态文件是否仍然可以正常加载(从 STATIC_ROOT),但他们没有!为什么?static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
添加到 urlpatterns
?示例
设置.py
DEBUG = True
...
INSTALLED_APPS = [
'django.contrib.admin',
...
'django.contrib.staticfiles',
'puppies.apps.PuppiesConfig'
]
...
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = 'c:/lkdsjfkljsd_cdn'
在我所有的模板中,我都使用了{% load static %}
。
然后我做:python manage.py collectstatic
此时,我的 urls.py
中是否包含以下内容似乎并不重要 - 我的静态文件仍在加载,但我不知道它们是否会加载从我项目的静态目录或我的 STATIC_ROOT (c:/lkdsjfkljsd_cdn):
if settings.DEBUG is True:
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
最后,如果我删除项目中的那些静态目录,所有 css、js 和图像都将不起作用,这让我相信我的 Django 项目正在从项目的静态目录而不是 STATIC_ROOT 加载静态文件。
那么,我如何告诉 Django 从我的 STATIC_ROOT 位置加载静态文件...而不是我的项目和应用程序中的静态目录? 或者,我是否误解了 Django不应该从本地的 STATIC_ROOT 位置加载文件吗?
*编辑(添加 HTML 图像)
最佳答案
我认为你混淆了一些东西。让我澄清一下。
static:
根据文档,它提供了用于提供静态文件的 URL 模式。如果你去implementation
,然后你会看到:
return [
re_path(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
]
它的作用是去掉前缀左边的正斜杠(即把/static/
转换成static/
),然后有一个view(是 serve
) 拉取文件的人。
serve:
此函数执行服务文件。它将提供来自文档根目录的文件。
runserver:
runserver
命令运行 django 开发服务器。如果您在 INSTALLED_APPS
中安装了 django.contrib.staticfiles
,那么它将自动提供静态文件。如果您不想提供静态服务,请使用 runserver --nostatic
。 collectstatic
或 STATIC_ROOT
与此命令无关。
collectstatic
:此命令收集来自不同STATIC_DIRS
的所有静态文件,并将它们放在由STATIC_ROOT
定义的文件夹中。 collectstatic
在生产部署中非常有用,当您使用 NGINX 或 Apache 等反向代理服务器时。NGINX/Apache/Varnish 使用该文件夹(collectstatic 存储静态文件的位置)作为根目录并提供静态服务从中。不建议在生产中使用 runserver
。您可以使用 gunicorn/uwsgi 来为 django 提供服务。但是 gunicorn/uwsgi 不提供静态文件,因此使用反向代理服务器来提供静态文件。
最后:
回答您的问题:
不,你不必把它放在你的代码中,除非你没有在你的 INSTALLED_APPS
中添加 django.contrib.staticfiles
。
没有
你不需要。 STATIC_ROOT 用于不同的目的
不是。但是为了提供 MEDIA 文件,您可以添加以下模式:
if settings.DEBUG:
urlpatterns += [
re_path(r'^media/(?P<path>.*)$', serve, {
'document_root': settings.MEDIA_ROOT,
}),
]
在生产中,媒体文件也应该由反向代理服务器提供服务。
关于python - Django static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 实际上做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56352489/
我有一组称为 nets 的整数集,我正在尝试对其进行迭代以确定是否已将来自或来自的整数添加到现有集合中;如果是这样,我将它们添加到现有集合中(这是为了跟踪电网中所有短路的组合)。 但是,我无法让 se
很奇怪:A 是一个集合,B 是一个集合的集合: Set A=new HashSet(); Set > B=new HashSet>(); 我给他们加了东西,输出 System.out.println
在 Agda 中,forall 的类型以这样的方式确定以下所有类型都是Set1 (其中 Set1 是 Set 的类型, A 的类型是 Set ): Set → A A → Set Set → Set
在 haskell 中我可以写一个函数 f where f :: Set a -> Set a -> Set a 如果我采用 Set Int 类型的两组 s1 和 s2,然后执行 f s1 s2 它将
在使用 Spring 时,我遇到了一个奇怪的问题。我有一个类,它接受一个集合作为输入,因为该类是底层框架的,所以我无法更改它。这是它的声明 private Set evaluate; public S
我是流的新手,我想通过将流操作应用于其条目集来修改 map ,但由于编译错误我无法这样做。 下面的代码只是创建了一个新的 map 对象并为其分配了一些整数值。然后它尝试通过在其条目集上应用流操作来删除
无论我看什么,我都会看到集合的输入是这样完成的: Set set = new HashSet(); 但是,我像这样定义我的集合 Set set = new HashSet(); 而且我仍然进行类型检查
我想对于 set -e 我可以捕获信号,但其他的我不知道。 最佳答案 为了完整性: set -e:如果命令失败则退出 set -u:如果在设置之前引用变量,则会出现错误 set -x:显示运行的命令
Set 维护唯一记录,并在尝试复制现有元素时更新现有记录。 考虑以下两种情况。您认为两者之间哪一个代码更快、更高效? 场景 1:使用 addAll() Set uniqueSet = new Hash
我在 Fedora 上做这个 问题: (sandbox)[root@localhost mysite]# django-admin.py runserver Error: Could not impo
https://codeforces.com/contest/1435/submission/96757666->使用set.upper_bound() https://codeforces.com/
使用 MySQL,我已将连接字符集设置为 UTF-8: SET NAMES 'utf8mb4'; SET CHARACTER SET 'utf8mb4'; 这样我就能以 UTF-8 格式返回所有内容,
在 Spring 3 MVC 中,我有一个称为 SettingsController 的 Controller ,它具有用于显示用户列表的 displayUsers()、saveUser() 和 de
我正在创建一个使用语法的程序,并查看该语法是否为 LL (1)。我想使用模块Set,但是我不知道如何进行,当然set的元素的类型是char,你能帮忙吗? 最佳答案 此答案假设您已经知道如何确定语法是否
好的,所以我重新整理了这篇文章,使其更容易理解(对所有的 Pastebin 感到抱歉,但堆栈溢出在代码格式化方面很愚蠢) 请注意,我不打算存储如下所述的大量数据。我使用我所说的数量的主要原因是为了尽可
我有一个密码,我保存在 Settings.settings 文件中并且我希望该部分被加密。 This是我得到的提示,但我真的不知道如何应用它。 谁能给我一个关于如何加密这样的密码的想法? 最佳答案 您
我在网上搜索并找到了如何在设置中添加特定的自定义数据类型。 我自己插入数据,而不是在程序运行时通过代码插入数据。我的问题是如何将自定义数据类型添加到设计器中的组合框。现在我想通了,需要建议,如何添加这
我一直在尝试将自定义类的自定义集合添加到我的 winforms 项目的应用程序设置中,我觉得我已经尝试了六种不同的方法,包括 this way , this way , this way , 和 th
在 Visual Studio 2008 中调试我的项目时,我的 Settings.settings 文件在构建之间不断重置。有没有办法防止这种情况发生? 谢谢。 最佳答案 好的,我找到了我真正想要的
关闭。这个问题不符合 Stack Overflow guidelines 。它目前不接受答案。 想改善这个问题吗?更新问题,以便堆栈溢出为 on-topic。 4年前关闭。 Improve this
我是一名优秀的程序员,十分优秀!