使用 Apache 从 Django 中的网络驱动器加载媒体文件

Posted

技术标签:

【中文标题】使用 Apache 从 Django 中的网络驱动器加载媒体文件【英文标题】:Loading media files from a network drive in Django with Apache 【发布时间】:2021-03-15 07:59:31 【问题描述】:

我有一个 django 页面,我试图在其中添加存储在网络驱动器中的横幅图像。

在开发环境中:

setting.py

MEDIA_URL = '/media/'

MEDIA_ROOT = PureWindowsPath('//共享驱动器/文件夹/').drive

urls.py

urlpatterns = [

path('admin/', admin.site.urls),
......
......

]

urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

models.py

类 WelcomePage(models.Model): 部门名称 = models.CharField(max_length=100,blank=True,null=True) bannerimage = models.ImageField(upload_to='DjangoPortal/welcome/images/',blank=True)

home.html

        <div class="card border-secondary mb-3">
            <div class="card-body" style="padding: 0px !important;">
                <img src=" pagedata.bannerimage.url "  />
            </div>
        </div>

通过以上设置页面完美运行

生产中:

以上所有设置保持不变。在 settings.py DEBUG =False 和 ALLOWED_HOSTS=[prod server ip, localhost]

httpd.conf 我在下面添加了

定义 MEDIAROOT "//共享驱动器/文件夹/"

别名 /media "$MEDIAROOT"

要求全部授予

目录>

但图像未加载。 我在 Apache 重启时遇到错误

** AH00526:C:/Apache24/conf/httpd.conf 第 562 行的语法错误: 路径无效。**

我做错了什么吗?

技术规范为 Windows Server 2012 R2 + Python 3.9 + Django 3.0.1 + SQL Server+ Apachelounge 2.4

如果您曾经处理过或知道这种情况,请指导。

【问题讨论】:

【参考方案1】:

我设法解决了这个问题。

问题在于 httpd.conf 文件

在 httpd.conf 中的设置必须更改为

别名/media/ //共享驱动器/文件夹/

- 没有“标记”

要求全部授予

目录>

并且 apache 服务必须由没有管理员权限且有权访问共享驱动器的特定用户启动

其余所有设置如前所述

【讨论】:

【参考方案2】:

在生产环境中保持与开发环境相同的设置。

MEDIA_ROOT = PureWindowsPath('//共享驱动器/文件夹/').drive

它应该可以工作。

祝你有美好的一天

【讨论】:

以上是关于使用 Apache 从 Django 中的网络驱动器加载媒体文件的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 ubuntu 的 apache 网络服务器上运行 Django 和 phpmyadmin

Apache Kafka:重播主题中的消息

如何使用 Django/Apache/mod_wsgi/MySQL 最大化 EC2 的性能?

在哪种情况下,来自驱动程序节点的对象被序列化并发送到 apache spark 中的工作节点

Django 可以单独在 Gunicorn 上运行(没有 Apache 或 nginx)吗?

django - 看不到从 apache 上传的媒体文件