Django新手在这里.我无法理解其含义:
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
Run Code Online (Sandbox Code Playgroud)
和
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
STATICFILES_DIRS = (
os.path.join(os.path.dirname(BASE_DIR), "static", "static"),
)
Run Code Online (Sandbox Code Playgroud)
这里发生了什么事?
我认为" 文件 "是我们所在的settings.py文件(?),所以BASE_Dir是两个文件夹...?即在其中有manage.py的那个?
那么STATIC_ROOT会是一个吗?还是两个?从BASE_DIR开始的目录.STATIC_ROOT FOLDER会为我制作吗?或者我必须制作一个名为"静态"的?
??? MY_PROJECT
??? BASE_DIR
? ??? MY_APP
? ? ??? settings.py
? ??? manage.py
??? static
Run Code Online (Sandbox Code Playgroud)
以上是否适用于此示例?那么STATIC_FILES_DIRS到底是什么?
dja*_*o11 24
如果您想知道BASE_DIR的位置,您可以将其打印到终端,只需将此行添加到您的settings.py:
print "base dir path", BASE_DIR
Run Code Online (Sandbox Code Playgroud)
和runserver一起查看结果.
Nor*_*054 18
如果您的settings.py配置如下,您的文件系统如下所示:
??? MY_PROJECT
??? BASE_DIR
? ??? MY_APP
? ? ??? settings.py
? ??? manage.py
??? static -> STATIC_ROOT
??? static -> STATICFILES_DIRS
Run Code Online (Sandbox Code Playgroud)
但它不是一个好的配置,因为它混合了收集的静态和Django尝试查找静态文件的目录(例如,收集它们).可能更好用这个:
??? MY_PROJECT
??? BASE_DIR
??? my_app
? ??? settings.py
? ??? static -> STATICFILES_DIRS
??? manage.py
??? deployment
??? collected_static -> STATIC_ROOT
??? media -> MEDIA_ROOT
Run Code Online (Sandbox Code Playgroud)
# settings.py
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATICFILES_DIRS = (os.path.join(
BASE_DIR, "my_app", "static"),)
STATIC_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "collected_static")
MEDIA_ROOT = os.path.join(
os.path.dirname(BASE_DIR), "deployment", "media")
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用您喜欢的Web服务器(Apache,Nginx等)轻松部署静态和媒体文件,并将其指向"部署"目录.
更新:
我还为MEDIA_ROOT添加了一个值得推荐的配置,并更改了收集的静态路径.