Django文件下载实例
1、打开命令行,创建django工程,并在工程内创建应用,命令如下:
django-admin startproject djfiledw
cd djfiledw
python manage.py startapp myfile

2、使用PyCharm打开工程,在工程根目录的djfiledw的settings.py文件,添加应用,添加模板文件路径。修改部分的settings.py文件内容如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'myfile.apps.MyfileConfig',
]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join('templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

3、在工程根目录创建templates文件夹,在文件夹内创建‘download.html’文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>download</title>
</head>
<body>
<div>
<a href="/down/">点我进行下载</a>
</div>
</body>
</html>
在templates文件夹下放一张图片用来下载测试

4、在工程目录的djfiledw文件夹的urls.py包含应用的路由,urls.py文件内容如下:
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'',include('myfile.urls')),
]

5、在应用文件夹新建‘urls.py’文件,并添加如下代码,指向两个路由,一个用来显示页面,一个用来响应下载请求。
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'download/',views.download),
url(r'down/',views.down),
]

6、在应用的views.py文件,增加两个视图函数,Chrysanthemum.jpg是在
templates文件夹下的图片文件,完整代码如下:
from django.shortcuts import render
from django.http import FileResponse
# Create your views here.
def download(request):
return render(request,'download.html')
def down(request):
file = open('templates/Chrysanthemum.jpg', 'rb')
response = FileResponse(file)
response['Content-Type'] = 'application/octet-stream'
response['Content-Disposition'] = 'attachment;filename="Chrysanthemum.jpg"'
return response

7、运行django服务器
python manage.py runserver
在浏览器打开下载网址测试如下图,这样就成功下载了文件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。