通用 路由: # 下载 文件 url ( " media / (? P <path>. *) $ " , File_down.FileDown.as_view ()) 通用 下载 文件 函数 : desde django.utils.http import urlquote de rest_framework.views import APIView from django.shortcuts import render, redirect, HttpResponse from dal import models from django.http import JsonResponse, FileResponse, StreamingHttpResponse import os import xlwt BASE_DIR = os.path.dirname (os.path.dirname (os.path.abspath (__ file__)) )) # C: \ Users \ user \ Desktop \ DownTest class FileDown (APIView): def get(auto, solicitud, ruta): ruta = BASE_DIR + " \\ media \\ " + ruta.replace ( " / " , " \\ " ) print ( " ruta " , ruta) mensaje = {} nombre_archivo = ruta.split ( " \\ " ) [- 1 ] print ( " nombre_archivo " , nombre_archivo) file = open (path.replace ( " " , "" ), 'rb ') # Cadena Reemplazar en archivo # Dígale al navegador que se trata de un archivo de descarga response = FileResponse (file) response [ ' Content-Type ' ] = ' application / octet-stream ' response [ ' Content-Disposition ' ] = " adjunto; nombre de archivo = {} " .format (urlquote (nombre_archivo)) # establece el nombre print (respuesta) respuesta de retorno
通用 configuración 配置: LANGUAGE_CODE = ' zh-hans ' TIME_ZONE = ' Asia / Shanghai ' USE_I18N = Verdadero USE_L10N = Verdadero USE_TZ = Verdadero # Internacionalización # https: // docs.djangoproject.com/en/1.11/topics/i18n/ STATIC_URL = ' / static / ' STATICFILES_DIRS = [ os.path.join (BASE_DIR, ' static ' ), os.path.join (BASE_DIR, " media " ), ] # Los usuarios de Django cargan archivos multimedia llamados MEDIA_URL = " / media / " # configuración de medios, los usuarios cargan los archivos se colocan en esta carpeta por defecto MEDIA_ROOT = os.path.join (BASE_DIR, " media " ) REST_FRAMEWORK = { " DEFAULT_AUTHENTICATION_CLASSES " : [], " DEFAULT_PERMISSION_CLASSES " : [], }
Diseño de la base de datos: clase Sugerencia (modelos.Modelo): "" " Tabla de sugerencias del proyecto " "" nombre = modelos.ForeignKey (to = " UserInfo " , verbose_name = " Persona sugerida " ) archivo = models.FileField (upload_to = ' sugerencia / archivos ' , null = False, UNIQUE = verdad, en blanco = false, verbose_name = " archivo (haga clic para descargar) " ) nombre_archivo = models.CharField (= 50 MAX_LENGTH, nulos = False, verbose_name = " cabecera del archivo " ) is_staff = Modelos.BooleanField (verbose_name = "¿ Es urgente ") is_staf = models.BooleanField (verbose_name = " Ya sea para usar " ) def __str__ (self): return self.file class Meta: verbose_name = " Tabla de sugerencias de proyecto " verbose_name_plural = verbose_name db_table = ' Sugerencia '