ホームページ >バックエンド開発 >Python チュートリアル >django1.8でフォームを利用してファイルをアップロードする実装方法
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 サイトに注目してください。