【发布时间】:2018-08-26 00:11:07
【问题描述】:
我正在尝试为我的项目进行简单的文件上传,但似乎有问题。因此,一旦用户登录,我尝试通过单击按钮上传文件,但结果是空白模板。
这是我在views.py中的上传功能:
def model_form_upload(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('main:register')
else:
return render(request, 'main/model_form_upload.html', {'form': form})
else:
return render(request, 'main/user_panel.html')
forms.py 中的类:
class DocumentForm(forms.ModelForm):
class Meta:
model = Document
fields = ('description', 'document')
models.py 中的类:
class Document(models.Model):
description = models.CharField(max_length=255, blank=True)
document = models.FileField(upload_to='documents/')
uploaded_at = models.DateTimeField(auto_now_add=True)
还有网址:
url(r'^upload/$', views.model_form_upload, name='upload')
在 model_form_upload.html 我只有这个:
{% extends 'main/user_base.html' %}
{% block content %}
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Upload</button>
</form>
<p><a href="{% url 'main:upload' %}">Return to home</a></p>
{% endblock %}
我尝试通过单击一个按钮来呈现模板,它看起来像这样:
<a href="{%url 'main:upload'%}" class="btn btn-primary"><font face="Ubuntu">Upload</font></a>
主要问题是,经过一番检查和搜索,我发现它没有返回任何内容,主要是因为model_form_upload视图中的if request.method == 'POST'语句返回False,所以它只是呈现没有表格的模板。所以我真的不明白为什么它似乎在那里返回 false。
【问题讨论】:
-
你试过
<input type="submit">而不是按钮吗? -
我试过了,好像没什么变化
-
没关系,我错过了问题的症结,@xyres 已经发现了。
标签: django file templates upload