【发布时间】:2011-08-17 15:26:08
【问题描述】:
我正在尝试做一个允许用户上传文件的功能。该文件将包含要插入数据库的信息,这就是我在函数中保存数据的原因。不确定这是否是最佳选择。
到目前为止我做了什么:
forms.py:
class UploadFileForm(forms.Form):
file = forms.FileField()
观看次数:
def last_step(request, word):
if request.method == 'POST':
form = UploadFileForm(request.POST, request.FILES)
if form.is_valid():
msg = handle_uploaded_file(word, request.FILES['file'])
return render_to_response('final_insert.html', {'msg': msg})
else:
form = UploadFileForm()
return render_to_response('upload.html',
{
'word': word,
'form': form })
模板:
<form enctype="multipart/form-data" action="{% url upload_done 'clinical' %}" method="post">
<div>
{% for field in form %}
{{ field }}
{% endfor %}
<input type="submit" value="Save" />
</div>
</form>
功能:
def handle_uploaded_file(word, f):
msg = "first stop"
data = []
for chunk in f.chunks():
data.append(chunk)
msg = "after chunk"
if word == 'clinical':
pat = Patient.objects.values_list('patient', flat=True)
for i in data:
if i[0] not in pat:
b2 = Patient(patient=i[0])
b2.save()
msg = "number was inserted"
else:
msg = "something"
return msg
问题是当我在模板中点击“保存”时,它很好地重定向到另一个模板,但我没有看到任何消息,就像我想看到的那样(final_insert.html 显示 {{ msg }})
谁能帮我理解我做错了什么?
欢迎任何帮助!
谢谢你的帮助!
【问题讨论】:
-
能贴出final_insert.html的sn-p代码吗?
-
final_insert.html 只是变量 msg。我正在上传文件并使用函数 handle_uploaded_file 我想将文件中的数据插入到数据库中。我传递一条消息只是为了让用户知道一切是否正常或是否出现问题(例如,如果用户提供了错误信息)。希望有助于理解..
-
我将变量 msg 放在了一些代码中,以知道希望 msg 他返回但它是空的,所以我猜我处理函数的方式有问题。因为它将我重定向到另一个页面
-
我不认为你如何处理这个函数有任何问题。我尝试了您的代码(使用一些伪列表和条件删除了与模型相关的代码 sn-p),它工作得很好。即使我现在也很困惑:P
-
对不起,我终于知道出了什么问题。我会更详细地回答。希望你能理解我的愚蠢错误
标签: django file-upload django-forms django-views