【问题标题】:problem handling upload file django问题处理上传文件django
【发布时间】: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


【解决方案1】:

我能够理解我的错误。
对不起大家我的愚蠢错误

所以这是形式:

<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>

网址:

url(r'^insert/file/(?P<word>clinical)/upload/$', last_step, name="upload"),
url(r'^insert/file/(?P<word>clinical)/upload/result/$', final, name='upload_done'),

因此视图 last_step 对应于 url “upload” 而不是 “upload_done”
我写了表单 action={% url upload_done 'clinical' %},所以当我点击保存时,它会自动将我重定向到另一个模板。无需运行代码!!

所以我把表格改成:

<form enctype="multipart/form-data" action="{% url upload 'clinical' %}" method="post">
<div>
    {% for field in form %}
        {{ field.label_tag }}
        {{ field }}
    {% endfor %} 
    <input type="submit" value="Guardar" />
</div>
</form>

现在它可以工作了..

对不起,我以为我需要重定向到另一个页面,但是当他重定向时,他没有运行代码..

【讨论】:

    猜你喜欢
    • 2011-08-15
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2011-07-08
    • 2011-11-01
    相关资源
    最近更新 更多