Django 清除request.POST对象并检查其是否有效
我有以下HTML格式的表单:Django 清除request.POST对象并检查其是否有效,django,django-forms,django-class-based-views,Django,Django Forms,Django Class Based Views,我有以下HTML格式的表单: <form method="POST"> {% csrf_token %} <button type='submit' name='manager_approve' value='{{ leave.leave_id }}' class='btn btn-success btn-md'>Approve</button> </form> 是否有方法在此请求上运行Is valid()和cleaned\u d
<form method="POST">
{% csrf_token %}
<button type='submit' name='manager_approve' value='{{ leave.leave_id }}' class='btn btn-success btn-md'>Approve</button>
</form>
是否有方法在此请求上运行Is valid()
和cleaned\u data()
函数的form
类。发布['manager\u approve']
而不创建form
对象?任何帮助都将不胜感激。不,是有效的()
和已清理的数据是表单
对象的方法/属性,因此您必须创建表单
但是,如果您有一个模型,您可以创建该模型的一个实例并运行clean()
,以检查属性是否有效,尽管我认为这与您的用例不匹配,因为您只传递一个id
由于您的用例非常简单,如果没有传递id的对象离开
对象,您可以通过捕获异常来避免表单
事件:
try:
leave = Leaves.objects.get(id=request.POST['manager_approve'])
except (Leaves.DoesNotExist, ValueError, TypeError):
# ValueError will be raised if id cannot be cast to int
# TypeError will be raised if id is of wrong type
raise Http404
否,是有效的()
和已清理的数据
是表单
对象的方法/属性,因此必须创建表单
但是,如果您有一个模型,您可以创建该模型的一个实例并运行clean()
,以检查属性是否有效,尽管我认为这与您的用例不匹配,因为您只传递一个id
由于您的用例非常简单,如果没有传递id的对象离开
对象,您可以通过捕获异常来避免表单
事件:
try:
leave = Leaves.objects.get(id=request.POST['manager_approve'])
except (Leaves.DoesNotExist, ValueError, TypeError):
# ValueError will be raised if id cannot be cast to int
# TypeError will be raised if id is of wrong type
raise Http404
因此,在不生成表单对象的情况下执行此操作是安全的?如果将其保存到db中,则不安全,但由于您只是执行get
并使用ORM,Django负责将其转换为int,因此无需担心SQL注入。我认为创建一个带有IntegerField
的简单表单并检查它是否有效会更干净。因此,在不创建表单对象的情况下执行此操作是安全的?如果将其保存到db中,这将不安全,但由于您只是执行get
并使用ORM,Django负责将其转换为int,因此,不必担心SQL注入。我认为创建一个带有IntegerField
的简单表单并检查其有效性会更简洁。