如何从网页上传文件并在Django中的表中显示名称
我做这项研究已经有很长一段时间了,我想不出来。我有我的Django应用程序链接到mysql数据库,它是由我的模型“CostDetl”创建的,我有一个网页来显示我的模型表。在表中,我有一个文件字段“协议”,其中我希望网页在单元格中为每个表行显示浏览和上载表单,如果上载了任何内容,并且文件字段不为空,则表单元格将仅显示文件名,并带有打开上载文件的链接。我没有问题显示与链接上传的文件,我可以上传在管理协议,但我不能想出如何从网页上传。请帮忙!以下是我的全部代码,非常感谢 设置:如何从网页上传文件并在Django中的表中显示名称,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我做这项研究已经有很长一段时间了,我想不出来。我有我的Django应用程序链接到mysql数据库,它是由我的模型“CostDetl”创建的,我有一个网页来显示我的模型表。在表中,我有一个文件字段“协议”,其中我希望网页在单元格中为每个表行显示浏览和上载表单,如果上载了任何内容,并且文件字段不为空,则表单元格将仅显示文件名,并带有打开上载文件的链接。我没有问题显示与链接上传的文件,我可以上传在管理协议,但我不能想出如何从网页上传。请帮忙!以下是我的全部代码,非常感谢 设置: MEDIA_ROOT
MEDIA_ROOT = '/Users/username/myapp/media'
MEDIA_URL = '/media/'
在project url.py中,我添加了:
url(r'^media/', views.UploadAgreementView),
在models.py中:
def content_file_name(instance, filename):
return os.path.join(['content', instance.user.username, filename])
class CostDetl(models.Model):
Provider = models.CharField(null=True, blank=True, max_length=200)
Description = models.CharField(null=True, blank=True, max_length=200)
Agreement = models.FileField(null=True, blank=True, upload_to=content_file_name)
def __unicode__(self):
return self.Provider+' | '+self.Description
def __str__(self):
return self.Provider+' | '+self.Description
观点:
def CostData(request):
costrecordset = CostDetl.objects.all()
context = {'CostDetl1': costrecordset}
return render(request, 'polls/CostDetl.html', context)
def UploadAgreementView(request):
if request.method == 'POST':
form = UploadAgreement(request.POST or None, request.FILES or None)
if form.is_valid():
newdoc = CostDetl(request.FILES['file'])
newdoc.save()
return HttpResponseRedirect(reverse('polls:AgreementUpload'))
else:
form = UploadAgreement()
documents = CostDetl.objects.all()
return render(request,
'polls/CostDetl.html',
{'CostDetl1': documents, 'AgreementUpload': form})
在forms.py中:
from django import forms
from .models import CostDetl
class UploadAgreement(forms.Form):
title = forms.CharField(max_length=50)
file = forms.FileField()
在模板中:
{% if CostDetl1 %}
{% load humanize %}
<table>
<tr>
<th>Provider</th>
<th>Expense Description</th>
<th>Agreement</th>
</tr>
{% for i in CostDetl1 %}
<tr>
<td nowrap>{{ i.Provider }}</td>
<td nowrap>{{ i.Description }}</td>
<td nowrap>
{% if i.Agreement %}
<a href="/media/{{ i.Agreement }}">
{{ i.Agreement }}
</a>
{% else %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="file" name="myfile"/>
<input type="submit" name="submit" value="Upload"/>
</form>
{% endif %}
</td>
</tr>
{% endfor %}
</table>
{% endif %}
错误是什么?没有错误消息,当我从我的网页上载时,网页会自动刷新,但该表格行的单元格中仍有浏览和上载按钮,文件未成功上载。任何人请帮助!错误是什么?没有错误消息,当我从我的网页上载时,网页会自动刷新,但该表格行的单元格中仍有浏览和上载按钮,文件未成功上载。任何人请帮助!
url(r'^CostDetl/$', views.CostData, name='CostDetl1'),
url(r'^Agreement/$', views.UploadAgreementView, name='AgreementUpload'),