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 專案中,開發者可以確保上傳檔案的統一性,防止潛在的安全威脅並嚴格控制檔案上傳過程。

更新於: 2023年8月10日

861 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告