2014-12-10 1 views
0

Я играл с загрузки файлов в Django, однако я получаю эту ошибку:Принуждение в Unicode с возможностью загрузки файлов в Django

Traceback: 
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.      response = wrapped_callback(request, *callback_args, **callback_kwargs) 
File "/Users/bli1/Development/Django/TrinityTaaS/parser/views.py" in handle_uploaded_file 
    35.  f = open(log_file, "r") 

Exception Type: TypeError at /parser/events/ 
Exception Value: coercing to Unicode: need string or buffer, WSGIRequest found 

Я не знаю, как решить эту проблему.

views.py

def handle_uploaded_file(log_file): 
    print "HI" 
    json_beacons = [] 
    f = open(log_file, "r") 
    # log regex for events 
    beacon1 = re.compile(r'.*\[DataCapture\]\s+(?P<beacon_var>\[(.*)\])') 
    beacon2 = re.compile(r'.*\[DataCapture\]\s+Event:\s+\{.*\}(?P<beacon_var>\{.*\})') 
    for chunk in f.chunk(): 
     log_entry = re.search(beacon1, chunk) 
     if log_entry: 
      beacon_json = log_entry.group("beacon_var") 
      json_beacons.append(beacon_json[1:-1]) 
    return json_beacons 

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

forms.py

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

ответ

1

Поскольку ошибка делает вывод, что log_file является объектом ответа, я думаю, что вы на самом деле ссылки handle_uploaded_file в конфигурации URL-адрес, а чем upload_file.

+0

* вздох * это был долгий день ... – Liondancer

1

В дополнение к вероятном Неправильный адрес конфигурации SmileyChris упоминалось, open ожидает строку, содержащую путь к файлу, в то время как request.FILES содержит объекты, представляющие файл как описано здесь: https://docs.djangoproject.com/en/dev/ref/files/uploads/#uploaded-files

Вам не нужно open в загруженный файл, просто используйте его методы read или chunks, чтобы получить загруженный контент.

+0

спасибо за подсказку! очень признателен! – Liondancer

Смежные вопросы