ホームページ >バックエンド開発 >Python チュートリアル >django1.8でフォームを利用してファイルをアップロードする実装方法

django1.8でフォームを利用してファイルをアップロードする実装方法

高洛峰
高洛峰オリジナル
2017-02-22 11:04:261469ブラウズ

Python にはさまざまな Web フレームワークが存在します。ジャンゴはヘビー級選手の代表選手です。成功している Web サイトやアプリの多くは Django に基づいています。

Django は、Python で書かれたオープンソースの Web アプリケーション フレームワークです。

Django では、Form クラスを使用してフォームをインスタンス化し、レンダリングすることで、検証などの多くの作業を節約できます。空である場合、入力が有効であるためには特定のパターンに準拠する必要があります。これらは、フォーム データの正確性を検証するために別のコードを記述する必要がないため、フォームの開発でよく使用されます。には、日付、テキスト タイプなどの多くのフォーム フィールドが用意されていますが、基本的な HTML に慣れていれば、非常に簡単に学習できるため、今日は各フォーム フィールドを 1 つずつ説明するつもりはありません。フォーム ファイルのアップロードについて説明します。このタイプは非常に特殊な処理が必要なので、簡単な例を作成してみましょう:

まず、Form を使用して単純なフォームを作成します:

class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()
class UserForm(forms.Form):
username = forms.CharField(required=False)
headImg = forms.FileField()

このフォームには 2 つしかありません。フィールドにユーザー名を入力し、ファイルまたは画像をアップロードする必要があります。

次に、これをテンプレートに入れてレンダリングします。この時点で、ビュー関数は次のとおりです。

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
#放上传文件的代码
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})

この関数は、ユーザーのリクエストが POST リクエストであるかどうかを判断します。ファイルが正常にアップロードされた場合にのみ OK を返すことができるため、それが有効であることを確認してから OK を返します。 GET リクエストの場合、空のフォームが直接表示され、ユーザーが入力できるようになります。

アップロードされたファイルの処理は、サーバー上でファイルを生成し、アップロードされたファイルの内容を新しいファイルに書き込むことです。したがって、その基本的な機能は次のようになります。アップロードされたファイルオブジェクトをパラメータとして受け取り、ローカルでファイルを開きます。ファイルからファイルを読み込み、新しいファイルに書き込みます。 コードは次のとおりです。

def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
def handle_uploaded_file(f):
with open('/server/testform/upload/' + f.name, 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)

このアップロード ファイル処理関数を使用すると、ビュー関数をさらに改善できます。

def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})
def register(request):
if request.method == "POST":
uf = UserForm(request.POST, request.FILES)
if uf.is_valid():
handle_uploaded_file(request.FILES['headImg'])
return HttpResponse('ok')
else:
uf = UserForm()
return render(request, 'register.html', {'uf': uf})

これでファイルのアップロードが完了です。

上記は、Django 1.8 でファイルをアップロードするためのフォームの使い方についての編集者による紹介です。ご質問があれば、メッセージを残してください。編集者がすぐに返信します。また、PHP 中国語 Web サイトをサポートしていただきありがとうございます。

Django 1.8 でフォームを使用してファイルをアップロードする方法に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。