【发布时间】:2016-06-23 19:52:38
【问题描述】:
在表单视图中处理 POST 数据时,以下两种方法有什么区别(如果有):
1.
def form_view(request):
form = MyForm(request.POST or None)
if form.is_valid():
# handle POST data here
2.
def form_view(request):
if request.method == "POST":
form = MyForm(request.POST)
if form.is_valid():
# handle POST data here
else:
form = MyForm()
【问题讨论】:
-
无论哪种方式,如果您正在使用表单,那么您最好使用django's Editing Views,这会使这个问题变得无声。
-
@sayse 基于类的视图不会自动优于基于函数的视图。即使您选择在任何地方都使用 cbvs,您仍然可能会在其他人的代码中遇到
request.POST or None技巧,因此了解它的工作原理很有用。 -
@Alasdair - 我同意这有助于理解它们的工作方式。当您开始需要使用“if method = x”(或 post 或 none)行开始您的视图时,CBV(在我看来)会发挥作用,逻辑分离使代码更清晰,CBV 会自动停止禁止的 http 请求等。