Django原生方式文件上传

今天学习Django原生方式上传至文件本地存储,即该文件上传之后在当前目录是可以查看得到的。

1、首先执行命令python manage.py startapp upfile 创建一个app,并将它加入到根路由中。
在这里插入图片描述
2、设置子路由,
在这里插入图片描述
3、在新建的app上即第一步创建的,右键new一个名为urls的python文件,将下图中内容加入

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$',views.index_view)
]

在这里插入图片描述
4、在第三步的url中鼠标放置在index_view的后面,按住alt+enter进入到views页面,敲入如下图内容。


```python
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
def index_view(request):
    if request.method=='GET':
        return render(request,'up.html')
    elif request.method=="POST":
        # 获取请求参数
        uname = request.POST.get('uname','')
        photo = request.FILES.get('photo','')
        print(photo.name)
        import os
        if not os.path.exists('media'):
            os.makedirs('media')

        with open(os.path.join(os.getcwd(),'media',photo.name),'wb') as fw:
            # 一次性读取文件
            fw.write(photo.read())
            # 分块读取文件
            for w in photo.chunks():
                fw.write(w)



        return HttpResponse('访问成功')
    else:
        return HttpResponse('hello')

 
5、第四步中使用了up.html,所以需要在templates中新建一个up.html的文件。注意enctype的使用格式,以及method一定是post方式。

```python

```html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="/upfiles/" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <p>
            <label for="ua">姓名:</label><input type="text" name="uname" id="ua"/>
        </p>
        <p>
            <label for="ph">头像:</label><input type="file" name="photo" id="ph"/>
        </p>
        <p>
            <label for="zc">注册:</label><input type="submit" value="注册"/>
        </p>
    </form>
</body>
</html>

6、在命令行输入python manage.py runserver,显示如下截图就说明成功。
在这里插入图片描述
7、在浏览器输入127.0.0.1:8000/upfiles/访问,其中upfiles/是步骤二中配置的子路由,不会的查看前面讲过的一篇吧,我记得有写过。
在这里插入图片描述
8、查看media文件夹新增了图片。其中media文件也是新增的。
在这里插入图片描述

这就是原生文件上传操作的步骤。总体来说自己对着敲一遍代码就会了。有人说学习编程需要多练习敲代码,我是不知道怎么敲,我也是敲一遍,估计这就是我比较菜鸡的原因吧。希望大家通过编程能实现财务自由。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值