如何从 django 框架中的表单字段获取值?

如何从 django 框架中的表单字段获取值?我想在视图中做这个,而不是在模板中..。

295769 次浏览

在视图 中使用表单很好地解释了这一点。

在视图中处理表单的标准模式如下所示:

def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...


print form.cleaned_data['my_form_field_name']


return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form


return render_to_response('contact.html', {
'form': form,
})

您可以在验证数据之后执行此操作。

if myform.is_valid():
data = myform.cleaned_data
field = data['field']

还有,看看姜戈的文件,它们很完美。

我使用 django 1.7 + 和 python 2.7 + ,上面的解决方案不起作用。 并且表单中的输入值可以使用如下 POST (使用上面相同的表单) :

if form.is_valid():
data = request.POST.get('my_form_field_name')
print data

希望这个能帮上忙。

你自己选吧:

def my_view(request):


if request.method == 'POST':
print request.POST.get('my_field')


form = MyForm(request.POST)


print form['my_field'].value()
print form.data['my_field']


if form.is_valid():


print form.cleaned_data['my_field']
print form.instance.my_field


form.save()
print form.instance.id  # now this one can access id/pk

注意: 该字段一旦可用就会被访问。

要从发送邮件请求的表单中检索数据,可以这样做

def login_view(request):
if(request.POST):
login_data = request.POST.dict()
username = login_data.get("username")
password = login_data.get("password")
user_type = login_data.get("user_type")
print(user_type, username, password)
return HttpResponse("This is a post request")
else:
return render(request, "base.html")

如果您使用的是 django 版本3.1或更高版本,这很容易

def login_view(request):
if(request.POST):
yourForm= YourForm(request.POST)
itemValue = yourForm['your_filed_name'].value()
# Check if you get the value
return HttpResponse(itemValue )
else:
return render(request, "base.html")

Clean _ data 将提交的表单转换为一个 dict,其中 钥匙表示表单中使用的属性名,而 价值表示用户提交的响应。访问我们写的视图中的特定值:

formname.cleaned_data['fieldname']

对于 Django 视图或 APIView,您可以简单地获取 request.data 如果确定传递给视图的数据总是表单数据,那么

  1. 复制资料 data = request.data.copy()
  2. 表单数据与列表中的键值一起返回,因此 data['key'][0] 获取列表的第一个元素,该元素是值第一个值,并且很可能只有当键只返回键的一个值时才返回值。

比如说

class EquipmentView(APIView):




def post(self, request: Request):
data = request.data.copy()
author = data.get('author')[0]