如何从网页上传文件并在Django中的表中显示名称

如何从网页上传文件并在Django中的表中显示名称,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我做这项研究已经有很长一段时间了,我想不出来。我有我的Django应用程序链接到mysql数据库,它是由我的模型“CostDetl”创建的,我有一个网页来显示我的模型表。在表中,我有一个文件字段“协议”,其中我希望网页在单元格中为每个表行显示浏览和上载表单,如果上载了任何内容,并且文件字段不为空,则表单元格将仅显示文件名,并带有打开上载文件的链接。我没有问题显示与链接上传的文件,我可以上传在管理协议,但我不能想出如何从网页上传。请帮忙!以下是我的全部代码,非常感谢 设置: MEDIA_ROOT

我做这项研究已经有很长一段时间了,我想不出来。我有我的Django应用程序链接到mysql数据库,它是由我的模型“CostDetl”创建的,我有一个网页来显示我的模型表。在表中,我有一个文件字段“协议”,其中我希望网页在单元格中为每个表行显示浏览和上载表单,如果上载了任何内容,并且文件字段不为空,则表单元格将仅显示文件名,并带有打开上载文件的链接。我没有问题显示与链接上传的文件,我可以上传在管理协议,但我不能想出如何从网页上传。请帮忙!以下是我的全部代码,非常感谢

设置:

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'),