如何通过Django在视图中上传文本文件?

时间:2016-09-11 13:29:44

标签: python django python-3.x

我现在正在制作网络应用。此应用程序获取具有未组织数据的文本文件并进行组织。我现在在Python3中使用Django。

我已经在模板中制作了表单数据。

  • Teplates

>    <form action="/practice/kakao_reader/" method="post"enctype="multipart/form-data">{% csrf_token %}
>        File:
>        <input type="file" name="file"/>
>        <input type="submit" value="UPLOAD" />
>     </form>

但我很难通过VIEW上传文件。 我试过的第一个代码是

  • View.py
  

def kakao_reader(request):

     

f = codecs.open(request.FILES ['file'],encoding ='utf-8')

     

data = f.read()

我收到 无效文件:InMemoryUploadedFile: 此错误。

具体错误是

  

环境:

     

请求方法:POST请求URL:   http://localhost:8000/practice/kakao_reader/

     

Django版本:1.10 Python版本:3.5.2已安装的应用程序:   ['django.contrib.admin','django.contrib.auth',   'django.contrib.contenttypes','django.contrib.sessions',   'django.contrib.messages','django.contrib.staticfiles',   '选举','实践']已安装的中间件:   [ 'django.middleware.security.SecurityMiddleware',   'django.contrib.sessions.middleware.SessionMiddleware',   'django.middleware.common.CommonMiddleware',   'django.middleware.csrf.CsrfViewMiddleware',   'django.contrib.auth.middleware.AuthenticationMiddleware',   'django.contrib.messages.middleware.MessageMiddleware',   'django.middleware.clickjacking.XFrameOptionsMiddleware']

     

回溯:

     

文件“C:\ Python35 \ lib \ site-packages \ django \ core \ handlers \ exception.py”   在内心     39. response = get_response(request)

     

文件“C:\ Python35 \ lib \ site-packages \ django \ core \ handlers \ base.py”in   _get_response     187. response = self.process_exception_by_middleware(e,request)

     

文件“C:\ Python35 \ lib \ site-packages \ django \ core \ handlers \ base.py”in   _get_response     185. response = wrapped_callback(request,* callback_args,** callback_kwargs)

     

kakao_json中的文件“C:\ Django \ mysite \ practice \ views.py”     43. f = codecs.open(request.FILES ['file'],encoding ='utf-8')

     

打开文件“C:\ Python35 \ Lib \ codecs.py”     895. file = builtins.open(文件名,模式,缓冲)

     

异常类型:/ practice / kakao_reader / Exception值的TypeError:   文件无效:

我该如何解决?谢谢。

1 个答案:

答案 0 :(得分:5)

request.FILES['file']已经是文件处理程序,因此您无需打开它。只需使用request.FILES['file'].read()