Django上传文本文件

前置条件:
1.创建了名为mydjango的project
2.创建了名为learn的app
3.learn中创建了模板文件夹templates
项目结构图如下:
这里写图片描述

具体流程如下:
1.在应用learn中新建forms.py,编写文件上传form对象:

from django import forms

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

2.建立package工具包,定义一个文件处理工具模块FileTools.py,遍历UploadedFile.chunks(),而不是使用read(),能确保大文件并不会占用系统过多的内存:

def handle_upload_file(file):

    with open('name.txt', 'wb+') as destination:
        for chunk in file.chunks():
            destination.write(chunk)

3.views.py中定义处理文件上传的controller方法:

from django.http import HttpResponse
from django.http import HttpResponseRedirect
from .forms import UploadFileForm
from learn.tools.FileTools import handle_upload_file

'''
上传文件处理
'''
def upload_file(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)

        if form.is_valid():
            handle_upload_file(request.FILES.get('file', None))
            ftemp = request.FILES.get('file', None)
            print('ftemp: ', ftemp)
            return HttpResponseRedirect('/success/')
    else:
        form = UploadFileForm()

    return render(request, 'upload.html', {'form':form})

'''
上传成功跳转处理
'''
def uploadFileResult(request):

    result = u'成功......'
    return render(request, 'success.html', {'result':result})

4.templates中添加模板文件success.html和upload.html:
success.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传结果</title>
</head>
<body>
    文件上传成功
</body>
</html>

upload.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form }}
        <input type="submit" value="提交"/>
    </form>
</body>
</html>

5.添加请求url,修改mydjango下的urls.py:

urlpatterns = [
    url(r'^$', learn_views.index, name='home'),
    url(r'^success/$', learn_views.uploadFileResult, name='success'),
    url(r'^uploadFile/$', learn_views.upload_file, name='upload'),
    #url(r'^$', learn_views.index),
    #url(r'^$', learn_views.home, name='home'),
    #url(r'^form/$', learn_views.form, name='form'),
    #url(r'^add/$', learn_views.add, name='add'),
    #url(r'^add_a_b/(\d+)/(\d+)/$', learn_views.add2, name='add2'),
    #url(r'^hello/$', learn_views.hello),
    url(r'^admin/', admin.site.urls),
]

6.启动运行,浏览器中输入http://127.0.0.1:8000/uploadFile/
这里写图片描述
选择文件上传,结果为:
这里写图片描述
7.在mydjango下,可以看到name.txt文件,文件内容为上传的文件内容:
这里写图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值