проблема обработки загрузки файла Django - PullRequest
0 голосов
/ 03 мая 2011

Я пытаюсь сделать функцию, которая позволила бы пользователю загружать файл.Этот файл будет содержать информацию для вставки в базу данных, поэтому в функции я сохраняю данные.Не уверен, что это лучший вариант.

То, что я уже сделал:

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

template:

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

function:

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}}) *

Может ли кто-нибудь помочь мне понять, что я делаю неправильно?Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 03 мая 2011

Я смог понять свою ошибку.
Извините, ребята, за мою глупую ошибку

, поэтому это форма:

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

urls:

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>

и теперь она работает ..

извините, ребята, я думал, что мне нужно перенаправить надругая страница, но когда он перенаправляет, он не запускает код ..

...