【问题标题】:Able to upload file but non retrieve/diplay them - Page not found能够上传文件但不能检索/显示 - 找不到页面
【发布时间】:2019-12-27 16:58:11
【问题描述】:

我正在用 Django 和 Postgres 创建一个网站,用户可以在其中回答多个问题并上传一些 PDF。

我可以上传 PDF 但不能显示它。我希望用户能够点击一个链接,然后打开一个包含 PDF 的新网页。

在我的details.html中我写了代码:

<a href="{{ MEDIA_URL }}{{project.thirdquestiondetail.third_seven.url}}">Click here to see the file</a>

但是,如果用户点击链接,他会收到以下消息:

我有以下几点:

mysite/urls.py

from django.contrib import admin
from django.urls import path, include
from django.views.generic.base import TemplateView
from django.conf import settings
from django.views.static import serve
from django.conf.urls.static import static

urlpatterns = [
    path('', TemplateView.as_view(template_name='home.html'), name='home'),
    path('conditions/', TemplateView.as_view(template_name='conditions.html'), name='conditions'),
    path('admin/', admin.site.urls),
    path('users/', include('users.urls')),
    path('users/', include('django.contrib.auth.urls')),
    path('projects/', include('projects.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

mysite/settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'mysite/static/')
]

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

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

如前所述,我很确定 PDF 已上传。事实上,如果我在管理面板中以超级用户身份登录,我可以看到 PDF。

但是如果我点击它,我会得到与上面报告的相同的 404 错误

当我定义 /media/ 时,我认为错误出现在我的 settings.py 中。所以我检查了几个类似的问题,但似乎我的设置与选择的答案一致。

【问题讨论】:

    标签: django


    【解决方案1】:

    我注意到上传实际上也不起作用。

    我解决如下:

    1) 在我的 views.py 中,我必须将 request.POST['chosen-name'] 更改为 request.FILES['chosen-name']

    2) 在我的 template.html

    中添加我的硬编码 html 格式的标签:enctype="multipart/form-data

    所以来自:

      <form method="post">..</form>
    

    到:

      <form method="post" enctype="multipart/form-data">..</form>
    

    检查:Django FileField upload is not working for me

    【讨论】:

      【解决方案2】:

      进行这些更改后退出并重新运行manage.py runserver

      尝试更改此&lt;a href="{{ MEDIA_URL }}{{project.thirdquestiondetail.third_seven.url}}"&gt;Click here to see the file&lt;/a&gt;

      &lt;a href="{% get_media_prefix %}{{project.thirdquestiondetail.third_seven.url}}"&gt;Click here to see the file&lt;/a&gt;

      【讨论】:

      • 我收到Invalid block tag on line 64: 'get_media_prefix', expected 'elif', 'else' or 'endif
      猜你喜欢
      • 2021-04-17
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 2016-10-02
      • 1970-01-01
      • 2020-11-08
      相关资源
      最近更新 更多