如何在 Django 中通过管理员下载更新的文件
How to download an updated file by admin in Django
我想做的是:
- 管理员从管理面板上传一个 PDF 文件。 (1)
- 需要转到指定模板。 (2)
- 并且应该通过按模板中的下载按钮进行下载。
下面是代码:
(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 %}
我想做的是:
- 管理员从管理面板上传一个 PDF 文件。 (1)
- 需要转到指定模板。 (2)
- 并且应该通过按模板中的下载按钮进行下载。
下面是代码:
(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
中为您的视图创建一个 urlurlpatterns = [
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
中为此视图创建 urlpath('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 %}