django从输入表单访问数据的方式

时间:2017-11-23 19:20:26

标签: django

我的症状是当我单击修改按钮然后我写下由bootstrap div部分实现的新窗口的信息。但是,我的数据库根本没有变化。请忽略...在代码中,我删除看起来很乱的属性。代码可能有拼写错误,因为我手动写下来查找错误,但我找不到。

我在view.py中尝试过,address_modify返回Httpresponse(street),但它返回None。

view.py

def address_modify(request, adid):
cat = get_object_or_404(Address, adid=adid)
if request.method == "POST":
    old_adid = adid
    email = request.user.email
    street = request.POST.get("street", None)
    city = request.POST.get("city", None)
...
    Address.objects.filter(adid=adid).update(..., street=street, city=city, state=state, ...)
    return redirect('/address/')
return redirect('/address/')

模板(我将其命名为address.html)

<button class="btn btn-success" data-toggle="modal" data-target="#modify">MODIFY</button>
<div class ="model fade" id="modify" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<from action="" method="POST">{% csrf_token %}
</div>
<div class="modal-body">
<input type="text" name="street">
<input type="text" name="city">
...
...
<input type="text" name="zipcode">
</div>
<div class="modal-footer">
<a href="{% url 'address_modify' i.adid %}">{% csrf_token %}
<button type="button" class="btn btn-primary">Save Change</button></a>
<div></form>

urls.py

 url(r'^address_modify/(?P<adid>[0-9]+)/$', MyAppView.address_modify, name='address_modify'),

2 个答案:

答案 0 :(得分:1)

在django中,最佳做法是创建一个forms.py文件来处理表单,你可以很容易地阅读它上面的文字,基本上表单将确保你所有的数据都被读取。

答案 1 :(得分:0)

这不是您实现表单和表单提交的方式。您的链接没有提交任何内容,只是打开一个链接。这是标准的表单语法:

<form method="POST">
  {% csrf_token %}
  ... your form input fields here ...
  <input type="submit" value="Save changes">
</form>

您必须提交表格。注意type="submit"那里。

接下来,Django具有表单功能。用它。正如@ Saumel-Omole建议的那样创建forms.py。模型地址的表单如下所示:

class AddressForm(forms.ModelForm):
    class Meta:
        model = Address
        fields = '__all__'

然后修改视图以使用如下形式:

 def address_modify(request, adid):

     cat = get_object_or_404(Address, adid=adid)
     form = AddressForm(instance=cat)
     if request.method == 'POST':
         form = AddressForm(request.POST, instance=cat)
         if form.is_valid():
             form.save()
             return redirect('/address/')
         else:
             print(form.errors) # change to logging

      return render(request, 'address.html', {'form': form})

浏览official Django tutorial。这些基础都在那里。也许这需要你花一两天的时间来完成它,但是长期来看,这远远不及猜测和谷歌搜索基本的东西几天。