精华内容
下载资源
问答
  • DJango数据配置文件

    2018-09-16 21:41:31
    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。 DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backends.sqlite3’, ‘NAME’: os.path.join(BASE_DIR, ‘db....

    在settings.py中保存了数据库的连接配置信息,Django默认初始配置使用sqlite数据库。

    DATABASES = {
    ‘default’: {
    ‘ENGINE’: ‘django.db.backends.sqlite3’,
    ‘NAME’: os.path.join(BASE_DIR, ‘db.sqlite3’),
    }
    }
    使用MySQL数据库首先需要安装驱动程序
    pip install PyMySQL

    在Django的工程同名子目录的init.py文件中添加如下语句
    from pymysql import install_as_MySQLdb
    install_as_MySQLdb()

    作用是让Django的ORM能以mysqldb的方式来调用PyMySQL。

    修改DATABASES配置信息
    DATABASES = {
    ‘default’: {
    ‘ENGINE’: ‘django.db.backends.mysql’,
    ‘HOST’: ‘127.0.0.1’, # 数据库主机
    ‘PORT’: 3306, # 数据库端口
    ‘USER’: ‘root’, # 数据库用户名
    ‘PASSWORD’: ‘mysql’, # 数据库用户密码
    ‘NAME’: ‘django_demo’ # 数据库名字
    }
    }

    在MySQL中创建数据库

    create database django_demo default charset=utf8;

    展开全文
  • django文件上传

    2019-05-09 22:29:00
    django处理文件上传时,文件数据被打包封装在request.FILES中 1、基本文件上传 首先写一个form表单,它必须包含一个FileField文件字段: #forms.py from django import forms class UploadFileForm...

    当django处理文件上传时,文件数据被打包封装在request.FILES中

    1、基本文件上传

    首先写一个form表单,它必须包含一个FileField文件字段:

    #forms.py
    
    from django import forms
    
    class UploadFileForm(forms.Form):
        title = forms.CharField(max_length=50)
        file = forms.FileField()

    处理这个表单的视图将在request.FILES中收到文件数据,可以用request.FILES['file']来获取上传文件的具体数据,其中的键值'file'是根据form表单中字段file=forms.FileField()的变量名来的

    注意:request.FILES只有在请求方法为POST,并且提交请求的<form>具有enctype="multipart/form-data"属性时才有效,否则request.FILES将为空

    下面是一个接收上传文件的视图范例:

    #views.py
    
    from django.http import HttpResponse
    from django.shortcuts import render
    from .forms import UploadFileForm
    from django.conf import settings
    
    #创建函数处理上传文件数据
    def handle_uploaded_file(f,filename):
        filename_path = f'{settings.MEDIA_ROOT}{filename}'  #生成文件名及路径
        with open(filename_path,'wb+') as destination:
            for chunk in f.chunks():
                destination.write(chunk)
            destination.close()
    
    def index(request):
        if request.method == 'POST':
            forms = UploadFileForm(request.POST,request.FILES)
            if forms.is_valid():
                handle_uploaded_file(request.FILES['file'],filename=request.FILES.get('file'))
                return HttpResponse('file for upload ok')
            print(forms)
    
        else:
            forms = UploadFileForm()
            print(forms)
        return render(request,'index.html',context={'forms':forms})

    在文件上传期间,实际文件数据存储在request.FILES,此字典中的每个条目都是一个UploadedFile对象,此对象包括以下方法和属性:

    UploadedFile.read():从文件中读取整个上传的数据,小心这个方法,如果上传的文件太大,如果你试图将它读入内存,它会消耗系统大量内存,你可以使用cunks()方法

    UploadedFile.multipls_chunks(chunk_size=None):如果上传的文件足够大,需要在多个块中读取,则返回True,默认为True,默认chunk_size为2.5M,也可以指定

     UploadedFile.chunks(chunk_size=None):生成器返回文件的块,如果multiple_chunks()为True,则因该尽量使用此方法而不是read()方法,在实践中通常最简单的方法就是一直使用chunks(),通过循环chunks()来存储文件数据

    UploadedFile长用的一些属性:

    UploadedFile.name:上传文件的名称

    UploadedFile.size:上传文件大小

    UploadedFile.content_type:随文件一起上传的内容类型标题(如:text/plain或application/pdf)

    UploadedFile.content_type_extra:包含传递给content-type标头的额外参数的字典

    UploadedFile.charset:队友text/content-types提供的utf8字符集编码

    其它文件代码:

    #urls.py
    from django.contrib import admin
    from django.urls import path,re_path
    from testfileile import views
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        re_path(r'^$',views.index,name='index'),
    
    
    #settings.py配置媒体文件上传目录和访问路径
    MEDIA_ROOT = os.path.join(BASE_DIR,'static/images/')
    MEDIA_URL = '/media/'
    
    #index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
    <form method="post" action="/" enctype="multipart/form-data"> #上传文件时必须包含enctype属性
        {% csrf_token %}
        {{ forms }}<br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>

    2、使用模型处理上传的文件

    如果是通过模型层的model来指定上传文件的保存方式,使用ModelForm更方便,调用form.save()的时候,文件对象会保存在相应的FileField的upload_to参数指定的地方,实际文件会存储在settings配置文件中MEDIA_ROOT指定的绝对路径加upload_to子目录下

    看如下示例:

    #models.py
    
    from django.db import models
    
    
    class ModelFileField(models.Model):
        title = models.CharField(max_length=200)
        file = models.FileField(upload_to='photos/%Y/%m/%d') #将格式化为时间目录
    
    #froms.py通过模型创建表单
    
    from .models import ModelFileField
    from django.forms import ModelForm
    
    class ModelFormFile(ModelForm):
        class Meta:
            model = ModelFileField
            fields = "__all__"
    
    #views.py
    
    from django.http import HttpResponse
    from django.shortcuts import render
    from .forms import ModelFormFile
    
    def upload_file(request):
        if request.method == 'POST':
            forms = ModelFormFile(request.POST,request.FILES)
            if forms.is_valid():
                forms.save(commit=True) #文件直接保存在model中的upload_to指定的子目录下
                return HttpResponse('ok')
        else:
            forms = ModelFormFile()
        return render(request,'upload.html',{'forms':forms})
    
    #settings.py
    MEDIA_ROOT = os.path.join(BASE_DIR,'static/images/')
    MEDIA_URL = '/media/'
    
    #upload.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>upload file</title>
    </head>
    <body>
    <form method="post" action="{% url 'upload' %}" enctype="multipart/form-data">
        {% csrf_token %}
        {{ forms }}<br>
        <input type="submit" value="提交">
    </form>
    </body>
    </html>

    如果要手动指定对象,只需将文件对象request.FILES赋值给模型中的文件字段即可:

    但需要注意,如有其它字段必须允许为空,否则将引发异常!

    #views.py
    
    from django.http import HttpResponse
    from django.shortcuts import render
    from .forms import ModelFormFile
    from .models import ModelFileField
    
    def upload_file(request):
        if request.method == 'POST':
            forms = ModelFormFile(request.POST,request.FILES)
            if forms.is_valid():
                instance = ModelFileField(file=request.FILES['file']) #将文件数据指定到模型字段
                instance.save()
                #forms.save(commit=True)
                return HttpResponse('ok')
        else:
            forms = ModelFormFile()
        return render(request,'upload.html',{'forms':forms})

    3、同时上传多个文件

    如果要使用一个表单字段同时上传多个文件,需设置字段HTML标签的mulpiple属性为True,在django表单中设置小部件HTML的属性:

    #forms.py
    
    from django import forms
    from .models import ModelFileField
    from django.forms import ModelForm
    
    class ModelFormFile(ModelForm):
        class Meta:
            model = ModelFileField
            fields = "__all__"
            widgets = {
                'file':forms.ClearableFileInput(attrs={'multiple':True})
            } #上面模型的基础上,创建的forms表单添加HTML属性multiple

    在视图中存储多个文件则需要通过getlist方法获取多个文件的列表,然后循环存储到数据并保存即可:

    #views.py
    
    from django.http import HttpResponse
    from django.shortcuts import render
    from .forms import ModelFormFile
    from .models import ModelFileField
    
    def upload_file(request):
        if request.method == 'POST':
            forms = ModelFormFile(request.POST,request.FILES)
            if forms.is_valid():
                for i in request.FILES.getlist('file'): #获取文件列表
                    instance = ModelFileField(file=i)
                    instance.save()
                return HttpResponse('ok')
        else:
            forms = ModelFormFile()
        return render(request,'upload.html',{'forms':forms})

    4、上传文件处理器

    当用户上传一个文件的时候,Django会把文件数据传递给上传文件处理器一个类。

    上传处理器的配置定义在FILE_UPLOAD_HANDLERS中,默认为:

    ["django.core.files.uploadhandler.MemoryFileUploadHandler", "django.core.files.uploadhandler.TemporaryFileUploadHandler"]

    MemoryFileUploadHandler和TemporaryFileUploadHandler定义了Django的默认文件上传行为:将小文件读取到内存中,大文件放置在磁盘中。

    在你保存上传文件之前,数据需要储存在某个地方。通常,如果上传文件小于2.5MB,Django会把整个内容存到内存。 这意味着,文件的保存仅仅涉及到内存中的读取和磁盘的写入,所以非常快。但是,如果上传的文件很大,Django会把它写入一个临时文件,储存在你的系统临时目录中。在类Unix的平台下,Django会生成一个文件,名称类似于/tmp/tmpzfp6I6.upload。

    我们可以编写自定义的处理器,来定制Django如何处理文件。例如,根据级别不同限制用户的磁盘配额,在运行中压缩数据,渲染进度条,甚至是转存到另一个储存位置,而不把它存到本地。

     

    转载于:https://www.cnblogs.com/zhangxinqi/p/10785351.html

    展开全文
  • Django文件下载

    2019-09-25 00:38:44
    基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生成的文件)、先检查用户...

    基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生成的文件)、先检查用户权限再下载文件等。因此,有必要研究一下文件下载功能在Django中的实现。

    最简单的文件下载功能的实现

    将文件流放入HttpResponse对象即可,如:

    def file_download(request):
        # do something...
        with open('file_name.txt') as f:
            c = f.read()
        return HttpResponse(c)

    这种方式简单粗暴,适合小文件的下载,但如果这个文件非常大,这种方式会占用大量的内存,甚至导致服务器崩溃

    更合理的文件下载功能

    Django的HttpResponse对象允许将迭代器作为传入参数,将上面代码中的传入参数c换成一个迭代器,便可以将上述下载功能优化为对大小文件均适合;而Django更进一步,推荐使用 StreamingHttpResponse对象取代HttpResponse对象,StreamingHttpResponse对象用于将文件流发送给浏览器,与HttpResponse对象非常相似,对于文件下载功能,使用StreamingHttpResponse对象更合理。

    因此,更加合理的文件下载功能,应该先写一个迭代器,用于处理文件,然后将这个迭代器作为参数传递给StreaminghttpResponse对象,如:

    from django.http import StreamingHttpResponse
    
    def big_file_download(request):
        # do something...
    
        def file_iterator(file_name, chunk_size=512):
            with open(file_name) as f:
                while True:
                    c = f.read(chunk_size)
                    if c:
                        yield c
                    else:
                        break
    
        the_file_name = "file_name.txt"
        response = StreamingHttpResponse(file_iterator(the_file_name))
    
        return response

    文件下载功能再次优化

    上述的代码,已经完成了将服务器上的文件,通过文件流传输到浏览器,但文件流通常会以乱码形式显示到浏览器中,而非下载到硬盘上,因此,还要在做点优化,让文件流写入硬盘。优化很简单,给StreamingHttpResponse对象的Content-TypeContent-Disposition字段赋下面的值即可,如:

    response['Content-Type'] = 'application/octet-stream'
    response['Content-Disposition'] = 'attachment;filename="test.pdf"'

    完整代码如下:

    from django.http import StreamingHttpResponse
    
    def big_file_download(request):
        # do something...
    
        def file_iterator(file_name, chunk_size=512):
            with open(file_name) as f:
                while True:
                    c = f.read(chunk_size)
                    if c:
                        yield c
                    else:
                        break
    
        the_file_name = "big_file.pdf"
        response = StreamingHttpResponse(file_iterator(the_file_name))
        response['Content-Type'] = 'application/octet-stream'
        response['Content-Disposition'] = 'attachment;filename="{0}"'.format(the_file_name)
    
        return response

    转载于:https://www.cnblogs.com/taoyucheng/p/10474619.html

    展开全文
  • Django文件上传

    2019-09-25 00:38:43
    Django在处理文件上传时,文件数据被打包封装在request.FILES中。 一、简单上传 首先,写一个form模型,它必须包含一个FileField: # forms.py from django import forms class UploadFileForm(forms.Form)...

    Django在处理文件上传时,文件数据被打包封装在request.FILES中。

    一、简单上传

    首先,写一个form模型,它必须包含一个FileField:

    # forms.py
    from django import forms
    
    class UploadFileForm(forms.Form):
        title = forms.CharField(max_length=50)
        file = forms.FileField()
    

    处理这个表单的视图将在request.FILES中收到文件数据,可以用request.FILES['file']来获取上传文件的具体数据,其中的键值‘file’是根据file = forms.FileField()的变量名来的。

    注意:request.FILES只有在请求方法为POST,并且提交请求的<form>具有enctype="multipart/form-data"属性时才有效。 否则,request.FILES将为空。

    下面是一个接收上传文件的视图范例:

    # views.py
    
    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import UploadFileForm
    
    # 另外写一个处理上传过来的文件的方法,并在这里导入
    from somewhere import handle_uploaded_file
    
    def upload_file(request):
        if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES) # 注意获取数据的方式
            if form.is_valid():
                handle_uploaded_file(request.FILES['file'])
                return HttpResponseRedirect('/success/url/')
        else:
            form = UploadFileForm()
        return render(request, 'upload.html', {'form': form})
    

    请注意,必须将request.FILES传递到form的构造函数中。

    form = UploadFileForm(request.POST, request.FILES)
    

    下面是一个处理上传文件的方法的参考例子:

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

    遍历UploadedFile.chunks(),而不是直接使用read()方法,能确保大文件不会占用系统过多的内存。

    二、 使用模型处理上传的文件

    如果是通过模型层的model来指定上传文件的保存方式的话,使用ModelForm更方便。 调用form.save()的时候,文件对象会保存在相应的FileField的upload_to参数指定的地方。

    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import ModelFormWithFileField
    
    def upload_file(request):
        if request.method == 'POST':
            form = ModelFormWithFileField(request.POST, request.FILES)
            if form.is_valid():
                # 这么做就可以了,文件会被保存到Model中upload_to参数指定的位置
                form.save()
                return HttpResponseRedirect('/success/url/')
        else:
            form = ModelFormWithFileField()
        return render(request, 'upload.html', {'form': form})
    

    如果手动构造一个对象,还可以简单地把文件对象直接从request.FILES赋值给模型:

    from django.http import HttpResponseRedirect
    from django.shortcuts import render
    from .forms import UploadFileForm
    from .models import ModelWithFileField
    
    def upload_file(request):
        if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES)
            if form.is_valid():
                instance = ModelWithFileField(file_field=request.FILES['file'])
                instance.save()
                return HttpResponseRedirect('/success/url/')
        else:
            form = UploadFileForm()
        return render(request, 'upload.html', {'form': form})
    

    三、 同时上传多个文件

    如果要使用一个表单字段同时上传多个文件,需要设置字段HTML标签的multiple属性为True,如下所示:

    # forms.py
    
    from django import forms
    
    class FileFieldForm(forms.Form):
        file_field = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}))
    

    然后,自己编写一个FormView的子类,并覆盖它的post方法,来处理多个文件上传:

    # views.py
    from django.views.generic.edit import FormView
    from .forms import FileFieldForm
    
    class FileFieldView(FormView):
        form_class = FileFieldForm
        template_name = 'upload.html'  # 用你的模版名替换.
        success_url = '...'  # 用你的URL或者reverse()替换.
    
        def post(self, request, *args, **kwargs):
            form_class = self.get_form_class()
            form = self.get_form(form_class)
            files = request.FILES.getlist('file_field')
            if form.is_valid():
                for f in files:
                    ...  # Do something with each file.
                return self.form_valid(form)
            else:
                return self.form_invalid(form)
    

    四、上传文件处理器

    当用户上传一个文件的时候,Django会把文件数据传递给上传文件处理器–一个类。

    上传处理器的配置定义在FILE_UPLOAD_HANDLERS中,默认为:

    ["django.core.files.uploadhandler.MemoryFileUploadHandler", "django.core.files.uploadhandler.TemporaryFileUploadHandler"]
    

    MemoryFileUploadHandler和TemporaryFileUploadHandler定义了Django的默认文件上传行为:将小文件读取到内存中,大文件放置在磁盘中。

    在你保存上传文件之前,数据需要储存在某个地方。通常,如果上传文件小于2.5MB,Django会把整个内容存到内存。 这意味着,文件的保存仅仅涉及到内存中的读取和磁盘的写入,所以非常快。但是,如果上传的文件很大,Django会把它写入一个临时文件,储存在你的系统临时目录中。在类Unix的平台下,Django会生成一个文件,名称类似于/tmp/tmpzfp6I6.upload

    我们可以编写自定义的处理器,来定制Django如何处理文件。例如,根据级别不同限制用户的磁盘配额,在运行中压缩数据,渲染进度条,甚至是转存到另一个储存位置,而不把它存到本地。

    转载于:https://www.cnblogs.com/taoyucheng/p/10474579.html

    展开全文
  • Django 文件上传

    2018-06-06 16:43:40
    django开发网页中经常会遇到需要将本地的文件上传到服务器,这里我们就需要通过post请求将数据推送到服务器上去 1 ,定义视图 def upLoadPic(request): return render(request, 'booktest/upLoadPic.html')...
  • Django文件上传逻辑

    2018-10-27 15:47:10
    一,Django文件上传 1.概述 当Django在处理文件上传时,文件的数据被保存在request.FILES中 FILES中的每个键为中的name的值 file只有在请求的方式为POST并且提交表单中带有 enctype=“multipart/form-data” 2.配置...
  • django 静态数据Static Data means those data items that we cannot want to change, we want to use them as it is like audio, video, images, files etc. 静态数据是指我们不想更改的数据项,我们想像音频,...
  • w.write(0, 7, u"添加时间") w.write(0, 8, u"上传图片名称") # 写入数据 excel_row = 1 for obj in bookinfo: data_id = obj.booksid data_species = obj.booksspecies data_name = obj.booksname data_number = ...
  • Django文件上传的原理

    2018-01-06 21:08:25
    1. 当Django在处理文件上传的时候,文件数据被保存在request.FILES。当用户上传一个文件的时候,Django会把文件数据传递给上传处理器,一个小型的类,会在文件数据上传时处理它。上传处理器在FILE_UPLOAD_HANDLERS中...
  • 数据获取 request.POST.get("xxxx") # 获取单个数据, 例如password request.POST.getlist("xxxx") # 获取...文件上传 request.FILES.get("xxx") # 注意对应的form需要有参数enctype="multipart/form-data" ...
  •  Django (2.1.10) + Python3.6 + xlwt (1.3.0)  操作系统使用的为:Windows 7 2. 接口代码 [Python]纯文本查看复制代码 ? 01 02 03 04 05 06 07 08 09 10 11...
  • Python django文件传输

    千次阅读 2017-10-09 13:45:05
    基于Django建立的网站,如果提供文件下载功能,最简单的方式莫过于将静态文件交给Nginx等处理,但有些时候,由于网站本身逻辑,需要通过Django提供下载功能,如页面数据导出功能(下载动态生成的文件)、先检查用户...
  • Django - 数据获取

    2018-03-31 09:57:00
    Django - 数据获取  1、radio值获取      2、checkbox获取    3、select 获取  select 获取值,需要根据前端multiple来获取,get or getlist;    4、上传文件   上传文件时,form表单 中记得加...
  • django 文件上传

    千次阅读 2010-03-24 10:06:00
    文件上传当Django处理上传一个文件的时候,文件数据被放在request.FILES中。这个文档解释文件怎么样被存储在磁盘上或者内存中,怎样定制默认的行为。基本文件上传考虑一个包含FileField的简单的表单:from django ...
  • django创建数据

    千次阅读 2019-06-01 16:14:37
    创建数据表需要在models.py文件下,每一张表对应一个类。django的model模块与数据库形成对应关系映射(简称:ORM),创建的表上传到数据库。 接下来还要进行数据迁移,首先生成迁移文件 打开虚拟环境,找到我们的...
  • 这篇文章主要介绍了简单了解django三种文件下载方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 推荐使用FileResponse,从源码中可以看出FileResponse是...
  • Django数据迁移

    千次阅读 2018-05-05 20:51:43
    对于一个导入的django,该如何运行?有哪些准备工作?...在setting文件中查找app名字:plant # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'd...
  • django 返回excel文件数据给前端下载

    千次阅读 2019-10-25 16:35:49
    问题:django 返回excel文件无数据 解决:再view试图中返回时,添加如下选项 # 设置HttpResponse的类型 response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml....
  • Django文件的初始化

    2021-04-29 20:42:42
    在项目名下的文件夹内创建一个views.py... 返回字符串类型的数据 render 返回HTML文件(自动去templates文件夹下寻找 redirect 重定向 """ return HttpResponse("你好") from django. shortcuts import H
  • django获取数据

    2019-03-12 20:22:00
    获取单个值 request.POST.get('user') # user对应前端name属性对应的值 获取多个值(如checkbox,multiple) ...request.POST.getlist('favor'...获取文件 # 表单需加enctype <form action="/login/" meth...
  • Django的HTML模板文件中,我们如何访问View视图函数传进来的变量呢? 使用方法总结: 1、访问变量: {{ variable_name }} 2、for循环 {% for post in posts %} //其他代码 {% endfor %} 3、if分支结构 {% if tag...
  • django进行数据交互之前,需要首先生成一个迁移文件,详细的过程在这之前部署Django的时候提到过,在生成相关的数据库配置文件之前需要先配置对应的数据库(案例使用的是SQLlite) 命令 python3 manage.py migrate...
  • Django数据迁移

    2019-12-26 10:04:07
    数据迁移的两个重要语句 makemigrations:查看models.py中的model是否有修订 有修订:生成新的migrations代码(首次生成的migrations代码文件为0001_intital.py,后续根据修订的model和原0001_intital.py 生成新...
  • 文件比较 import difflib t1 = open('d:/text1.txt','r') t2 = open('d:/text2.txt','r') t1_line = t1.read() t2_line = t2.read() t1_lines = t1_line.splitlines() t2_lines = t2_line.splitlines()...
  • Django上传文件最简单最官方的方法 1.配置media路径 在settings.py中添加如下代码: MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 2.定义数据表 import os from django.db import models from django....
  • ​ 相信很多童鞋在工作中使用 django 会遇到这样的场景,在我们启动服务之前需要先在数据库导入一些必要数据为服务提供支撑,我们通常叫这类数据文件统称为种子文件django 其实也给我们提供类似的功能,django ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,778
精华内容 1,511
关键字:

django文件数据