我有一个上传视图:
views.py
def upload(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
newdoc = Document(docfile = request.FILES['docfile'])
newdoc.save()
# Redirect to the document list after POST
return HttpResponseRedirect(reverse('wiki.views.upload'))
else:
form = DocumentForm() # A empty, unbound form
# Load documents for the list page
documents = Document.objects.all()
return render_to_response(
'wiki/upload.html',
{'documents': documents, 'form': form},
context_instance=RequestContext(request)
)
和我的模板 upload.html
{%extends "base.html"%}
{%block title%}Upload Documents{%endblock%}
{%block content%}
<!-- List of uploaded documents -->
{% if documents %}
<ul>
{% for document in documents %}
<a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a>
{% endfor %}
</ul>
{% else %}
<p>No documents.</p>
{% endif %}
<!-- Upload form. Note enctype attribute! -->
<form action="{% url upload %}" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.non_field_errors }}
{{ form.docfile.help_text }}
{{ form.docfile.label_tag }}
{{ form.docfile.errors }}
{{ form.docfile }}
<input type="submit" value="Upload" />
</form>
{%endblock%}
我在{MEDIA_ROOT}下的指定位置上传了一些文件,它显示在服务器上,但如果我从该文件夹中删除该文件,文件名仍显示在网页上。
如何使用我的模板验证然后显示上传的文件。
答案 0 :(得分:0)
在视图或模板标签中,您可以拥有下一个代码。 f是文件
try:
exists_file = f.size()
except IOError:
exists_file = False
答案 1 :(得分:0)
没有从文件系统到django的反向链接 - 如果您将文件上传到目录,则不会向数据库添加新条目,同样如果从目录中删除文件,则记录不会从数据库中删除。
如果从服务器删除文件,则还需要从数据库中删除该条目。这将使您的文件列表与服务器上实际可用的内容保持同步。