Django 文件上传(如何上传 Django 文件)25

作者 : 慕源网 本文共3594个字,预计阅读时间需要9分钟 发布时间: 2021-11-22 共399人阅读

本文是Django教程的一部分,您可以点击Django教程系列查看所有教程。

Django 文件上传简介

每个 Web 应用程序中都会有表单处理,上传文件作为表单处理的一部分是一种非常常见的操作。作为表单处理的一部分上传这些文件的方法至关重要。Django 中的此文件上传处理讨论了作为 Django 中文件级处理的一部分所涉及的所有方法。上传的文件可以被检索、处理、存储等。存储和文件系统存储等库对于存储级必需品的文件上传过程非常有帮助。这些在 Django 中用于文件上传的文件字段是从 Django 框架的表单处理部分演变而来的。

设置文件上传

当在 Django 中上传文件时,该文件会通过 request.Files[] 标记到请求中。这些要求。文件负责捕获正在上传的文件详细信息并将它们标记在其中。需要从此请求中检索上传的文件详细信息和内容。Files[] 部分,然后通过参考文件名提及 request.FILES 进一步处理,这将创建对象,该对象用于在文件设置和存储过程中更像基于文件的对象。可以从这个基于文件的对象中提取有关该文件的所有详细信息。

如何上传 Django 文件?

基本上文件上传过程由以下主要步骤组成,下面的派生步骤是如何在 Django 中实现文件上传过程中的文件处理的逐步过程。

1.在 Forms.py 文件中声明文件字段。这是更关键的部分,因为此字段将用作表示用于处理表单的模板中的文件的参考。这里的表单库用于导入 FileField() 类,为这些元素创建的对象将充当文件字段的对象。在下面的示例中,它表示为“uploaded_File”。

#-*- coding: utf-8 -*-
from django import forms
class fileform(forms.Form):
Uploaded_File = forms.FileField()

2.创建处理文件的视图,这个视图是渲染和处理文件最关键的部分,这里上面创建的字段将在创建这个视图时需要考虑以下关键点。

 

3.上传的文件将被标记为请求的一部分。文件,可以使用此请求处理有关文件和文件本身的所有详细信息。文件部分。可以通过以下行将文件捕获到基于文件的对象中,

uploaded_file = request.FILES['Uploaded_File']

4.要访问文件和有关文件的详细信息,可以使用以下方法,因此对文件的所有操作,例如确定文件大小,确定文件名称,还识别标记为的文件的内容类型请求的文件甚至读取文件都可以通过这些方法来完成,还有一些称为块的方法,它们在将文件读取为较小的块时很有用。

5. Django文件上传方法

下面是Django文件上传的方法和描述:

方法 描述
UploadedFile.name 显示上传文件的名称。
UploadedFile.size 显示上传文件的大小。
UploadedFile.content_type 提及文件处理的内容类型。
UploadedFile.content_type_extra 提及与内容类型关联的附加标头。
UploadedFile.charset 提到浏览器提供的字符集
UploadedFile.read() 此方法用于从文件中读取整个数据。

6. FileSystemStorage 类可用于对本地文件系统进行基本的文件存储操作。

句法:

文件系统存储(位置、base_url、file_permissions_mode、directory_permissions_mode)。

Argument 描述
Location 这表示文件存储的目录
base_url 文件存储位置的 URL
file_permissions_mode 与文件关联的权限
directory_permissions_mode 目录在保存时将获得的文件系统权限。

7.下面的视图显示了对该文件执行的所有文件级操作。视图中涉及的过程解释如下。首先,创建表单文件的对象。模型文件字段用作从 request.files[] 标头检索消息的参考。request.FILES 被分配给一个对象。此对象用于对文件的所有进一步操作。所以识别文件大小、内容头、文件名等的过程都是通过这个对象关联到request.file方法来实现的。

代码:

Views.py

from django.shortcuts import render
from django.http import HttpResponse
from Django_app1.forms import fileform
from django.contrib.auth.models import User
from django.core.files.storage import FileSystemStorage
from django.contrib import messages
def file_upload(request):
file = fileform()
print(" File Values in File Dictionary:", request.FILES)
if request.method == 'POST' and request.FILES['Uploaded_File']:
uploaded_file = request.FILES['Uploaded_File'] fs = FileSystemStorage()
filename = fs.save(uploaded_file.name, uploaded_file)
uploaded_File_Size = 'Size of Uploaded file: ' + str(uploaded_file.size)
content_type_of_uploaded_file = 'Content type of uploaded file: ' + str(uploaded_file.content_type)
uploaded_file_name = 'Name of Uploaded file: ' + str(uploaded_file.name)
uploaded_file_url = fs.url(filename)
print("uploaded file url",uploaded_file_url)
messages.success(request, '!!! File upload successful !!!')
messages.success(request,uploaded_File_Size)
messages.success(request,uploaded_file_name)
messages.success(request,content_type_of_uploaded_file)
return render(request, 'filehandeling.html', {"file":file})
return render(request, 'filehandeling.html',{"file":file})

8.需要制定文件的 HTML 模板,在下面显示的代码片段中,文件上传字段是从应用程序的 forms.py 部分呈现的。HTML 文件还包括用于显示作为文件上传过程的一部分触发的消息的代码。

Message Framework方法:

  1. messages.debug(request, ‘Intended message’)
  2. messages.info(request,’Intended message’)
  3. messages.success(request,’Intended message’)
  4. messages.warning(request, ‘Intended message’)
  5. messages.error(request, ‘Intended message’)

代码:

<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Django App1</title>
</head>
<body>
<h1> <u> FILE UPLOAD HANDELING IN DJANGO </u> </h1>
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
<div style = "max-width:470px;">
<form method = 'POST' enctype="multipart/form-data">
{{ file.as_p }}
{% csrf_token %}
<input type="submit" class="btn btn-primary" value="submit">
</form>
</div>
</body>
</html>

输出:

结论

我们可以从上面给出的示例中注意到,Django 框架可以从可用的方法集灵活地实现文件级处理。


慕源网 » Django 文件上传(如何上传 Django 文件)25

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录