努力理解基于 django class 的视图代码
Struggling to understand a django class based view code
我在阅读基于 django class 的视图 的文档时遇到了一段我无法真正理解的代码。如果有人可以解释“get”部分,那将非常有帮助。
这里是查看代码
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import View
from .forms import MyForm
class MyFormView(View):
form_class = MyForm
initial = {'key': 'value'}
template_name = 'form_template.html'
def get(self, request, *args, **kwargs):
form = self.form_class(initial=self.initial)
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
# <process form cleaned data>
return HttpResponseRedirect('/success/')
return render(request, self.template_name, {'form': form})
什么是“初始”? get 函数如何为这段代码做出贡献?
initial = {'key': 'value'}
是为表单设置一些默认值的地方。
self.form_class(initial=self.initial)
当有 GET 请求时,使用这些默认值来填写表单。
get
函数渲染表单,即生成HTML表单。当给定 initial values 的字典时,即使在第一次访问时,表单也已经填满了——初始值。否则它将是空的。
class 变量 initial
只是存储初始值,因此它们可以被 get 函数使用。您 可以 将变量也放在 get
方法中或完全忽略它:
def get(self, request, *args, **kwargs):
form = self.form_class(initial={'key': 'value'})
return render(request, self.template_name, {'form': form})
(虽然不会这样做,因为初始值会稍微不那么明显,但它们确实很重要。)
此外,请查看有关 bound and unbound forms 的文档,了解初始值和默认值之间的区别。
我在阅读基于 django class 的视图 的文档时遇到了一段我无法真正理解的代码。如果有人可以解释“get”部分,那将非常有帮助。
这里是查看代码
from django.http import HttpResponseRedirect
from django.shortcuts import render
from django.views.generic import View
from .forms import MyForm
class MyFormView(View):
form_class = MyForm
initial = {'key': 'value'}
template_name = 'form_template.html'
def get(self, request, *args, **kwargs):
form = self.form_class(initial=self.initial)
return render(request, self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
# <process form cleaned data>
return HttpResponseRedirect('/success/')
return render(request, self.template_name, {'form': form})
什么是“初始”? get 函数如何为这段代码做出贡献?
initial = {'key': 'value'}
是为表单设置一些默认值的地方。
self.form_class(initial=self.initial)
当有 GET 请求时,使用这些默认值来填写表单。
get
函数渲染表单,即生成HTML表单。当给定 initial values 的字典时,即使在第一次访问时,表单也已经填满了——初始值。否则它将是空的。
class 变量 initial
只是存储初始值,因此它们可以被 get 函数使用。您 可以 将变量也放在 get
方法中或完全忽略它:
def get(self, request, *args, **kwargs):
form = self.form_class(initial={'key': 'value'})
return render(request, self.template_name, {'form': form})
(虽然不会这样做,因为初始值会稍微不那么明显,但它们确实很重要。)
此外,请查看有关 bound and unbound forms 的文档,了解初始值和默认值之间的区别。