【问题标题】:Upload a file in admin and then download from the website Django在 admin 中上传文件,然后从 Django 网站下载
【发布时间】:2020-09-17 03:05:18
【问题描述】:

我正在尝试创建一个网站,客户可以在该网站的管理部分上传文件,之后任何人都可以从该网站下载此文件。最好是任何文件,如 pdf、exe、doc(可能吗?)我可以在 Admin 中上传文件并在网站上显示。它以正确的名称下载文件(保存在媒体中)但显示失败,文件丢失。

到目前为止我有:

setting.py

STATIC_URL = '/static/'

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

MEDIA_URL = '/media/'

models.py

class TEACHING(models.Model):

    title = models.CharField(max_length=100)

    content = models.TextField()

    date_posted = models.DateTimeField(auto_now_add=True)

    excercise = models.FileField(upload_to="files/", default='default value')

    def __str__(self):

        return self.title

views.py

def teaching(request):

    context = { 'teaches' : TEACHING.objects.all()}

    return render(request, 'blog/teaching.html', context)

urls.py

if settings.DEBUG:

    urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)

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

teaching.html

{% for teach in teaches %}    
    <a href="{{ teach.excercise }}" download>Download</a>
{% endfor %}

【问题讨论】:

  • 您的应用中是否有 DEBUG=True,以及在您的 href 中生成的 url 是什么(浏览器中的检查元素)

标签: django file download


【解决方案1】:

Managing files docs

您应该从文件字段中获取 URL

<a href="{{ teach.excercise.url }}" download>Download</a>

【讨论】:

    【解决方案2】:

    您好,您没有在href 中提供url,所以请按照以下方式更改您的&lt;a&gt;

    <a href="{{ teach.excercise.url }}" download>Download</a>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多