如何在 Django 中通过管理员下载更新的文件

How to download an updated file by admin in Django

我想做的是:

下面是代码:

(1)

class Reports(models.Model):

name = models.CharField(max_length=100, null=False, blank=False, verbose_name="File Name")
report = models.FileField()

(2)

<tr>
   <td>"File Name must be showed in here"</td>
   <td class="text-center">PDF</td>
   <td class="text-center lang-tr-src"><a href="What way should i give here?" target="_blank"><i class="fas fa-file-download"></i></a></td>
   <td class="text-center lang-en-src"><a href="" target="_blank"><i class="fas fa-file-download"></i></a></td>
</tr>

在网站上每个月会有一份报告。我想在模板中列出它们并使它们可供下载。 我应该为此写一个视图吗(如果是的话应该如何?)或者我应该怎么做?

您需要在模板中显示的每个数据都需要将其写入 views.py,因此这种情况非常具体。

views.py:

def your_view_name(request):
    reports = Reports.objects.all()
    context = {
     'reports': reports
     }
    return render(request, 'your_template.html', context)

然后在 urls.py

中为您的视图创建一个 url
urlpatterns = [
    path("", views.your_view_name, name='your_url_name')
     ]

您的模板:

<tr>
       {% for obj in reports %}
       <td>{{ obj.name }}</td>
       <td class="text-center">PDF</td>
       <td class="text-center lang-tr-src"><a href="{{ obj.report.url }}" Download 
       target="_blank"><i class="fas fa-file-download"></i></a></td>
       <td class="text-center lang-en-src"><a href="" target="_blank"><i 
       class="fas fa-file-download"></i></a></td>
       {% endfor %}
  </tr>

首先创建一个新视图。

def report_view(request):
    context = {}
    reports= Reports.objects.all()
    context['reports'] = reports
    return render(request, "pages/report.html", context)

在 urls.py

中为此视图创建 url
path('reports', report_view, name='report_view'),

在您的模板中为此上下文创建 forloop,如下所示:

{% for report in reports %} 
<tr>
   <td>"File Name must be showed in here"</td>
   <td class="text-center">PDF</td>
   <td class="text-center lang-tr-src"><a href="report.report " target="_blank"><i class="fas fa-file-download"></i></a></td>
   <td class="text-center lang-en-src"><a href="" target="_blank"><i class="fas fa-file-download"></i></a></td>
</tr>
{% endfor %}