FileExtensionValidator – Django 中的文件扩展名验证
开发者可以使用高级 Python Web 框架 Django 快速轻松地设计 Web 应用程序。它提供了一套完整的工具和库来创建 Web 应用程序,并遵循模型-视图-控制器 (MVC) 架构模式。
为什么在 Python 中使用 Django?
从简单的个人项目到大型商业解决方案,Django 被用于创建各种 Web 应用程序。它擅长构建复杂的数据驱动网站,包括社交网络站点(如 Instagram),电子商务平台和内容管理系统。Django 开箱即用地提供了许多功能,例如 URL 路由、数据库管理、用户身份验证和模板。因此,开发者可以专注于构建应用程序逻辑,而不是花费时间在基础设施上。
借助 FileExtensionValidator,开发者可以创建自己的允许和禁止文件扩展名列表,提供灵活且可定制的解决方案。然后,他们可以修改验证过程以满足其特定应用程序的要求,确保仅接受安全且相关的文件。
由于 FileExtensionValidator 可以轻松集成到 Django 的表单验证框架中,因此实现非常简单。开发者只需几行代码即可将此重要的保护层添加到其文件上传表单中,从而保护其应用程序和用户免受潜在威胁。
如何使用文件扩展名验证器?
Django 提供了 FileExtensionValidator 验证器来检查由 FileField 或 ImageField 上传的文件的文件扩展名。
示例 1
在此示例中,我们创建一个视图来控制文件上传。使用提供的输入,我们构建一个表单对象,验证其有效性,然后将表单内容保存到数据库。
算法
使用命令 python manage.py startapp fileuploader 创建一个新的 Django 应用程序。
在 fileuploader 应用程序的 models.py 文件中定义一个具有 FileField 的模型以上传文件。
在 fileuploader 应用程序的 forms.py 文件中,构建一个表单来管理文件上传。
在 fileuploader 程序的 views.py 文件中,创建一个视图来管理文件上传。
在 fileuploader 应用程序的 templates 文件夹中创建两个 HTML 模板 upload.html 和 success.html,以预览上传表单以及成功上传后的成功消息。
项目 urls.py 文件现在必须包含 URL 模式,并且项目 settings.py 文件必须将 fileuploader 应用程序添加到 INSTALLED_APPS 列表中。
示例
from django.db import models
from django.core.validators import FileExtensionValidator
from django import forms
from .models import UploadedFile
from django.shortcuts import render
from .forms import FileUploadForm
class UploadedFile(models.Model):
png_file = models. FileField(upload_to='png_files/', validators=
[FileExtensionValidator(allowed_extensions=['png'])])
class FileUploadForm(forms.ModelForm):
class Meta:
model = UploadedFile
fields = ['png_file']
'''The FileUploadForm class is an inheritor of forms in this instance.
Additionally, we have selected the png_file field as the field to be shown
and the UploadedFile model as the form's model.'''
#Defining the Upload method
def upload_file(request):
if request.method == 'POST':
form = FileUploadForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return render(request, 'fileuploader/success.html')
else:
form = FileUploadForm()
return render(request, 'fileuploader/upload.html', {'form': form})
# Code for settings.py file
INSTALLED_APPS = [
'fileuploader',
# ..
]
# Code for URL.py file
from django.urls import path
from fileuploader.views import upload_file
urlpatterns = [
path('upload/', upload_file, name='upload_file'),
# ...
]
'''Now that the server has been set up and is running, you can upload PNG
files by going to https://:8000/upload/ and typing the command python
manage.py runserver.'''
输出
执行上述步骤后,我们将获得一个基本的索引文件,如下所示。


这仅允许 png 文件,不允许任何其他文件。
结论
总而言之,Django 中的 FileExtensionValidator 是一个验证 Web 应用程序中文件扩展名的重要工具。它使开发者能够实施限制、增强安全性并在文件上传方面提供流畅的用户体验。通过将其集成到他们的 Django 项目中,开发者可以确保上传文件的统一性,防止潜在的安全威胁并严格控制文件上传过程。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP