django - 通过 Django 管理控制台上传的文件权限错误
问题描述
我的网站的一部分被封锁,只是作为我制作的项目的存储库/免费托管服务。我在我的网站中有一个personal
专门用于此的简单 Django 项目 - 理想情况下,该过程是
- 通过管理控制台(通过)
将文件上传到
personal
数据库mysite.com/admin
- 这保存在
/static/media/personal/[foldername]/myproject
- 这保存在
- 为该文件分配一个短标签(例如
myproject
) - 现在,任何人都应该可以访问该文件
mysite.com/personal/myproject
,这将重定向到我上传的静态文件。
我的问题是我上传的文件是用权限保存的0600
,所以当我稍后尝试用我的网络浏览器访问它们时,我得到一个 403 Forbidden 错误。我可以手动进入服务器并将权限更改为0644
然后它工作正常,但我希望 Django 为我做这件事。
我已经尝试将以下内容放入我的网站settings.py
文件中:
FILE_UPLOAD_PERMISSIONS = 0o644
这是我能够通过研究找到的唯一真实的东西,我可以理解。不幸的是,这似乎没有帮助。我用于此personal
数据库的模型如下:
def generate_filename(instance, filename):
if instance.folder and len(instance.folder) > 0:
return os.path.join('personal', instance.folder, filename)
else:
return 'personal/{}'.format(filename)
class PersonalFile(models.Model):
"""
A model type representing a single file. Contains only that
file object.
"""
def __str__(self):
return "{} ---> {}".format(self.name, str(self.file))
""" The url for accessing this file """
name = models.CharField(max_length=200)
""" A description for this project """
description = models.TextField(blank=True, null=True)
""" Whether this item should be displayed on the projects index """
display = models.BooleanField(default=True)
""" A folder for this object to be placed in """
folder = models.CharField(max_length=200, blank=True, null=True, default=None)
""" The actual media url of the file """
file = models.FileField(upload_to=generate_filename)
请注意,我没有遇到文件夹获得错误权限的问题,只是应该放入其中的文件。
我正在使用标准的 Django/gunicorn/nginx 堆栈进行部署。为简单起见,我想在 Django 级别处理这个问题,但如果修改一些 nginx 配置文件或其他东西更容易,那也可以。
解决方案
推荐阅读
- machine-learning - 如何对 Hugging 人脸模型进行批量推理?
- svg-animate - SVG 动画将半径更改为 50% 并再次设置为 100%
- c++ - 为渲染创建一个单独的线程使我的代码变慢
- python - Python - 在 jupyter notebook 中测试代码时收到“ValueError:int() 的无效文字,基数为 10:'a'”
- html - 如果我有五个复选框,我如何将用户限制为三个选项
- java - 有没有办法在java中pow 2 BigInteger Numbers?
- python - requests.exceptions.HTTPError: 404 Client Error: Resource Not Found for url | Azure 认知服务 API
- python - 尝试创建看涨期权收益配置文件但不断收到此错误
- python - 将参数添加到表单集声明中
- firebase - Firebase 会取代我所有的云功能吗?