ドキュメントの拡張の制限
あなたは、ファイルの拡張子を制限したい場合は、の使用形態を制限することが必要です。私たちは、通常のフォームフォームも使用のModelFormフォームすることができ使用モデルから直接フィールドを読み取ることができます。次のようにサンプルコードは次のとおりです。
アップロード写真
Djangoはアップロードされた画像の形式を決定しますと、アップロードの写真を写真をアップロードし、通常のファイルをアップロードしていない、その後場合は、それは我々が最初に定義し、失敗した確認します、(接尾判断除くと、利用できる映像かどうかを判断します)モデルであって、次のサンプルコードのImageField:
from django.db import models
from django.core import validators
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.CharField(max_length=100)
# 指定字段类型为FileField,就可以定义上传文件的字段,并且指定参数upload_to就可以指定上传的文件存储的文件夹
# 此处指定存储在项目文件下的files下。
# 指定了该字段之后就不用再在views.py文件中定义打开,写入,保存文件的函数了。非常简单
# thumbnail = models.FileField(upload_to="%Y%m%d", validators=[validators.FileExtensionValidator(['pdf','doc','zip'],message='文件的格式不正确')])
thumbnail = models.ImageField(upload_to='%Y/%m/%d')
あなたはのImageFieldにこのフィールドを使用したい場合は、まず枕ライブラリをインストールする必要があり、枕をインストールピップを行います。
我々はそれが写真のアップに提出されたかどうかを確認したいので、私たちは確認するために、フォームを形成することができます
from django import forms
from .models import Article
class ArticleForm(forms.ModelForm):
class Meta:
model = Article
fields = '__all__'
views.pyファイルで検証:
from django.shortcuts import render
from django.http import HttpResponse
from django.views import View
from .models import Article
from .forms import ArticleForm
def save_file(file):
with open('zjy.txt', 'wb') as fp:
for chunk in file.chunks():
fp.write(chunk)
class IndexView(View):
def get(self,request):
form = ArticleForm()
return render(request, 'uploadfile/index.html', context={'form':form})
def post(self, request):
form = ArticleForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponse('success!')
else:
print(form.errors.get_json_data())
return HttpResponse('fail')
ます。http://127.0.0.1:8000 /メディア/ 2020年2月15日/ AI.jpgとブラウザにURLを入力すると、アップロードしたファイルを表示することができます。