python教程—STATICFILES_DIR、STATIC_ROOT和MEDIA_ROOT之间的区别-Python实用宝典

python教程—STATICFILES_DIR、STATIC_ROOT和MEDIA_ROOT之间的区别

这三个静态url有什么不同?我不确定我是否正确,我使用MEDIA_ROOT来存储我上传的照片(通过models.ImageField())

这三个静态url有什么不同?

我不确定我是否正确,我使用MEDIA_ROOT来存储我上传的照片(通过models.ImageField())

但是,我为admin和admin.py创建了一个JS脚本。我对媒体的定义如下:

    .... class Media: js = ('/admin/custom.js', )

和我settings.py:

    .... STATIC_ROOT = "/home/user/project/django1/top/listing/static"

我将custom.js添加到STATIC_ROOT/admin/custom中。,但它没有工作。抛出404 not found错误。

然后我将STATIC_ROOT更改为STATICFILES_DIRS,它就可以工作了!!

    .... STATICFILES_DIRS = "/home/user/project/django1/top/listing/static"

所以,我不明白这里发生了什么。事实上,我只是不明白STATIC_ROOT和STATICFILES_DIRS之间有什么区别。

目前我正在通过virtualenv在我的机器上测试Django,还没有部署,这是STATIC_ROOT不能工作的原因吗?

回答

您可以在Django文档中找到这些设置。以下是我自己对文档的定义和引用:

  • MEDIA_ROOT是使用FileField上传文件的文件夹。

    将保存用户上传文件的目录的绝对文件系统路径。

  • STATIC_ROOT是使用management .py collectstatic后将存储静态文件的文件夹

    collectstatic将收集用于部署的静态文件的目录的绝对路径。

    如果启用了staticfiles contrib应用程序(默认),则collectstatic管理命令将把静态文件收集到这个目录中。有关使用的详细信息,请参阅如何管理静态文件。

  • STATICFILES_DIRS是一个文件夹列表,Django将在其中搜索安装的每个应用程序的静态文件夹之外的其他静态文件。

    此设置定义了在启用FileSystemFinder finder时,staticfiles应用程序将遍历的其他位置,例如,如果使用collectstatic或findstatic management命令或使用静态文件服务视图。

在你的设置中,你应该:

    MEDIA_ROOT = os.path.join(BASE_DIR, "media/") STATIC_ROOT = os.path.join(BASE_DIR, "static/") # Make a tuple of strings instead of a string STATICFILES_DIRS = ("/home/user/project/django1/top/listing/static", )

…的地方:

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

在缺省Django settings.py中定义。

​Python实用宝典 (pythondict.com)
不只是一个宝典
欢迎关注公众号:Python实用宝典

本文由 Python实用宝典 作者:Python实用宝典 发表,其版权均为 Python实用宝典 所有,文章内容系作者个人观点,不代表 Python实用宝典 对观点赞同或支持。如需转载,请注明文章来源。
0

发表评论