如何从Django中的user_directory_path下载文件

时间:2019-10-09 10:57:36

标签: django django-media

我正在尝试下载已上传到django媒体目录的文件。 我能够成功上传文件,但是我不知道下载这些文件的最佳方法。我在网上看到了不同的示例,但是我不完全理解它们。这是我的密码

models.py:

    urlpatterns = [
    .........
    path('profile/', user_views.profile, name='profile'),

]

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

urls.py

        <a href="{{ user.profile.certification.url }}">Download Certification</a>

file.html:

ValueError
     The 'certification' attribute has no file associated with it.

我收到此错误:

CARD Number: 5204 2477 5000 1505
Expiration Date: 11/2022
CVC: 111

我是否可以在views.py中创建一个视图并在urls.py中创建一个URL以处理下载?如果是这样,我该怎么做。

1 个答案:

答案 0 :(得分:0)

错误消息很清楚:

  

“证书”属性没有与之关联的文件。

,表示此profile实例的certification字段为空(尚未上传任何文件)。而且,如果没有文件路径,您将无法构建url,对吗?

您在这里有两种解决方案:要么将certification字段设为必填项(删除blank=True参数),但是如果您已经具有没有认证的配置文件,那么这将无法解决问题-在尝试获取网址之前先测试profile.certification

{% if user.profile.certification %}
   <a href="{{ user.profile.certification.url }}">Download Certification</a>  
{% else %}
    <p>This user hasn't uploaded their certification</p>
{% endif %}