загрузка файла с django - PullRequest
       3

загрузка файла с django

1 голос
/ 11 апреля 2011

Я новичок в работе с django, я пытаюсь создать форму, которая позволяет пользователю загружать файл.Код, который я использовал, почти такой же, как в учебнике по djangoproject, но он не работал.мой код выглядит следующим образом:

для просмотра:

from django import forms

from django.shortcuts import render_to_response

from django.http import HttpResponseRedirect


def upload_file(request):
    if request.method == 'POST':

        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['file'])
            return HttpResponseRedirect('/')
    else:
        form = UploadFileForm()
    return render_to_response('upload_file.html', {'form': form})

def handle_uploaded_file(f):
    destination = open('home/dutzy/Desktop/mysite/name.txt', 'wb+')
    for chunk in f.chunks():
        destination.write(chunk)
    destination.close()

модели:

из django.db импорт моделей

from django import forms

class UploadFileForm(forms.Form):
    title = forms.CharField(max_length=50)
    file  = forms.FileField()

и шаблона: upload_file.html

<form enctype="multipart/form-data" method="post" action="/upload_file/">
    <table>
        <tr>
            <td>
                <b> {{ form.file.label_tag }}</b>  {{ form.file}}
            </td>
        </tr>
        <tr>
            <td>
                <input type="hidden" value="title" name="title" id="title" />
                <input type="submit" value="Save" id="Save"/>
            </td>
        </tr>
     </table>
</form>

Я тестирую свой код на сервере разработки django.ошибка: глобальное имя 'UploadFileForm' не определено , хотя я подозреваю, что есть и другие проблемы.я настроил urls.py как: (r'^upload/$', 'mysite.upload.views.upload_file')

Может кто-нибудь взглянуть на мой код и указать мне правильное направление?

Спасибо

Ответы [ 4 ]

1 голос
/ 11 апреля 2011

Согласен с ответом Юджи.Я бы также предложил определить класс UploadFileForm в вашем представлении вместо моделей.Это относится к логике представления, а не к данным / модели.

1 голос
/ 11 апреля 2011

Я только что задал очень похожий вопрос, или, по крайней мере, решение, я думаю, будет таким же.Проверьте ответ @catavarn здесь: Ссылка на мой вопрос / его ответ

1 голос
/ 11 апреля 2011

Ошибка - простая ошибка Python.UploadFileForm is not defined

В зависимости от того, что вы вставили, вы импортировали только материал из django.

Вы должны импортировать ваш UploadFileForm из того места, где он находится, в код функции вашего представления,поэтому добавьте "from myproject.myapp.models import UploadFileForm"

Чтобы воспроизвести вашу ошибку:

def global_name_error():
    UploadFileForm
global_name_error()
[out] NameError: global name 'UploadFileForm' is not defined
1 голос
/ 11 апреля 2011

Убедитесь, что ваша форма соответствует этим правилам http://docs.djangoproject.com/en/1.2/ref/forms/api/#binding-uploaded-files-to-a-form

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...