これが些細な質問の場合は申し訳ありませんが、私はかなり前から探していて、適切な実装を見つけることができませんでした。
Django)で一般的なビューのいずれかをサブクラス化することにより、(ファイルのアップロードを処理できる)投稿専用ビューを実装する方法の例を誰かが提供できますか?
すべてのブログ投稿コメント作成ロジックを処理するエンドポイントを作成したいと思います。コメントフォームはブログページに埋め込まれているため、このデータはPOST
としてURLに送信されます。
View
クラスには http_method_names
ビューが受け入れるHTTPメソッドをリストする属性。
したがって、任意の汎用ビューをサブクラス化して(たとえば、 CreateView
)、http_method_names
なので、POSTリクエストのみが許可されます。
from Django.views.generic.edit import CreateView
class CommentCreateView(CreateView):
http_method_names = ['post']
model = Comment
...
あるいは、View
をサブクラス化して、独自のpostメソッドを作成することもできます。
class CommentView(View):
def post(self, request):
...
この場合、GETリクエストを処理するHttpResponseNotAllowed
メソッドを定義していないため、GETリクエストはget
レスポンスを返します。
あなたは次のようなことを試すことができます:
class MyView(TemplateView):
template_name = 'my_template.html'
def post(self, request, **kwargs):
my_data = request.POST
# do something with your data
context = {} # set your context
return super(TemplateView, self).render_to_response(context)
docs から:
dispatchはリクエストを調べて、GET、POSTなどであるかどうかを判断し、一致するメソッドにリクエストを中継します、定義されている場合、またはレイズしますHttpResponseNotAllowed
したがって、基本的には、POST
メソッドのみを定義して作成するクラスベースのビューは、POSTリクエストのみを許可します。
私はこのようなものがうまくいくと思います:
class TestView(View):
def post(self, request):
return HttpResponse('This is a post only view')
Django Rest Framework http://www.Django-rest-framework.org/api-guide/generic-views/ #createapiview
作成専用のエンドポイントに使用されます。
Postメソッドハンドラーを提供します。