上传文件 POST url 在部署时引发 404

Posted

技术标签:

【中文标题】上传文件 POST url 在部署时引发 404【英文标题】:Uploading files POST urls raise 404 when deploy 【发布时间】:2018-07-18 01:53:12 【问题描述】:

我正在使用 apache 和 cPanel 的主机上部署 django 应用程序。我想我完成了 django 需要部署的所有步骤。一切正常,除了圆顶 admin 发布网址。 当我通过 来自管理站点 的帖子发送表单时,其中一个字段是将上传到目录的文件,服务器响应我 404。一些信息: Python 3.5、Django 1.11.9 未找到错误404 时间:发送任何包含选择文件字段的帖子表单,即使该文件不是强制性的。 字段中没有文件的表单可以正常工作。在生产中,一切都很完美。 我在 public_html 文件夹中有一个指向我的媒体和静态文件夹的符号链接。 此错误仅显示在管理页面中。我可以毫无问题地从网站上传文件 这是我的代码: urls.py

urlpatterns = i18n_patterns(
url(r'^admin/', admin.site.urls),
url(r'^i18n/', include('django.conf.urls.i18n')),
url(r'^', include('myapp.urls')),
prefix_default_language=False)

settings.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

这是我第一次托管网站,所以很抱歉,如果我问的是一个愚蠢的问题,但我找不到任何解决方案,即使在这里也是如此。另外,对不起我的英语。感谢您未来的答案

编辑 我的非管理员表单工作完美。问题出在管理页面。我用粗体字编辑了我的旧问题

【问题讨论】:

如果你附上你项目的基础urls.py文件,我可以提供一个解决方案。 ***.com/questions/63328969/… 查看这个***中的解决方案 【参考方案1】:

可能是网络服务器问题。检查您的 cPanel 设置 您的 wsgi 文件位置可能有问题 查看some tutorial了解更多信息。

【讨论】:

我看了很多教程,我不认为是服务器问题【参考方案2】:

如果您使用 django 的静态文件服务器提供媒体文件,则项目基础 urls.py 文件中的 urlpatterns 变量应按特定顺序分配,以便 i18n_patterns(...) 分配位于 static(...) url 之前.

你应该这样做:

urlpatterns = i18n_patterns(
    url(r'^admin/', admin.site.urls),
    url(r'^i18n/', include('django.conf.urls.i18n')),
    url(r'^', include('myapp.urls')),
    prefix_default_language=False)

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

【讨论】:

以上是关于上传文件 POST url 在部署时引发 404的主要内容,如果未能解决你的问题,请参考以下文章

服务器上的文件上传 404 错误

媒体文件上的 404 - Django

自签名证书在 AWS Route53 域上引发 404 not found 错误

在 WordPress 3.4 中使用 POST / GET 参数时出现 404

jQuery Ajax 发布 - 404 错误

c# web文件上传时文件过大404错误的问题