Django表单安全,模型表单vs表单



我正在一点一点地学习django,我意识到我有一些方法可以用'action= to view'来创建表单,modelforms, forms和基本的html。

如果我们谈安全,最好的选择是什么,我问,因为我有联合国数据库创建一个表单更新数据,用modelform很简单但是我有遵守queryset规则去做它,因为我没有找到一种方法来更新数据与由一种形式,所以我有两个问题,如果有最好的办法让我在接下来的代码但形式后,做?。

def update_info(request, pk):
    if request.method == "POST":
        name = request.POST['name_form']
        company = request.POST['company_form']
        detail = Data.objects.get(pk=pk)
    Data.filter(pk=pk).update(name=name, company=company)
    return HttpResponse('Name: %s Company: %s' % (name,company))

这个代码工作得很好,但如果你看到没有办法,或者也许我不知道如何清洁的形式,如果形式是没有帖子,像这样的东西。

此方法适用于form或modelform

else:
        form = my_form()

问题是,如果这不是用模型表单制作的表单,我怎么能修改表单呢?

是否有办法使用我的表单与。forms,更新,而不是使它在html ?

因为它工作,但我需要在"动作"表单中设置一个新视图。

通过表单验证来验证输入比直接查询更安全。这也是django表单的主要目的之一。这里是django表单的参考。

回到你的代码和问题,我想下面的代码可以帮助你。

在下面选择一个解决方案并将其放入forms.py:

from django import forms
#sol 1
class MyNewForm(forms.Form):
    name = forms.CharField(label='name', max_length=100)
    company = forms.CharField(label='company', max_length=100)
#sol 2
class MyNewForm(forms.ModelForm):
    model = MyModel
    fields = ["name", "company"]

然后编辑views.py:

# path to your forms.py
from .forms import *
def update_info(request, pk):
    if request.method == "POST":
        form = MyNewForm(request.POST)
        detail = Data.objects.get(pk=pk)
        if form.is_valid():
            cleaned_data = form.cleaned_data
            Data.filter(pk=pk).update(name=cleaned_data["name"], company=cleaned_data["company"])
            return HttpResponse('Name: %s Company: %s' % (cleaned_data["name"], cleaned_data["company"]))
        else:
            return HttpResponse('Form Validation Error!')

最新更新