【问题标题】:Django: Display File Name for Uploaded FileDjango:显示上传文件的文件名
【发布时间】:2016-07-12 08:04:58
【问题描述】:

在我的模型中,我定义了一个 FileField,我的模板将其显示为链接。我的问题是链接文件将 url 显示为名称。 html页面上显示的是:

上传文件:./picture.jpg

我查看了 DjangoDocs 关于文件名和以前的 S.O. question,但就是想不通。

我该怎么做:

  1. 让它显示不同的名称,而不是网址。
  2. 允许上传文件的管理员为其命名,然后将在模板上查看该名称。

我的模型.py:

class model_name(models.Model):
    attachment = models.FileField()

我的views.py(如果条目存在,则显示它,如果不存在,则返回消息):

from django.core.files import File
from vendor_db.models import model_name

def webpage(request, id):
    try:
        variable = model_name.objects.get(id=id)
    except model_name.DoesNotExist:
        raise Http404('This item does not exist')
    return render(request, 'page.html', {
        'variable': variable,
    })

我的页面.html:

<p>Uploaded File: <a href="{{ variable.attachment.url }}">{{ variable.attachment }}</a></p>

【问题讨论】:

    标签: django django-models django-templates django-views django-class-based-views


    【解决方案1】:

    对于您的代码:

    class model_name(models.Model):
        attachment = models.FileField()
    

    attachment 是一个FileField 对象,它有一个名为filename 的属性,所以只需请求该属性即可。即

    foo = model_name.objects.create(attachment=some_file)
    foo.attachment.filename # filename as a string is returned
    

    【讨论】:

    • 这有所帮助,但仍有一些问题。我知道我需要调用文件名服装,但我不应该在定义 foo 时调用它吗?另外我在哪里放第二行代码?在模板中?
    【解决方案2】:

    在page.html中:

    <p>Uploaded File: <a href="{{ model.Attachment.url }}">{{ model.Attachment }}</a></p>
    

    应该改为:

    <p>Uploaded File: {{ variable }}</p>
    

    【讨论】:

    • 你说得对,我应该只显示变量,但是,我定义的变量是我现在遇到的当前问题。我希望我能投票,但我还没有足够的代表大声笑
    【解决方案3】:

    为了解决这个问题,我只是在models.py 中添加了一个附加字段。这允许用户给它一个名字。并在页面上显示它时,调用 Attachment 和 Attachment_Name ,如下所示。希望这可以帮助。没有 URL 混乱。

    class model_name(models.Model):
        Attachment = models.FileField()
        Attachment_Name = models.CharField()
    

    在我的 html 文件中:

    <p>Uploaded File: <a href="{{ variable.Attachment.url }}">{{variable.Attachment_Name }}</a></p>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 2011-02-28
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2020-08-19
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多