【问题标题】:Error Page Not Found when I update records in django当我在 django 中更新记录时找不到错误页面
【发布时间】:2014-09-16 18:55:08
【问题描述】:

我是 django 新手,我尝试创建一个简单的表单来更新一些记录。

models.py

class ConfigForm(forms.ModelForm):
    def __init__(self,idprov,*args,**kwargs):
        super(ConfigForm,self).__init__(*args,**kwargs)
        self.id_proveedor = idprov

    class Meta:
        model = Config

views.py

@csrf_exempt
def configView(request):
    pk = request.POST.get('idprov')
    prov = get_object_or_404(Config, id_proveedor=pk)
    if request.method == 'POST':
       form = ConfigForm(request.POST, instance = prov)
       if form.is_valid():
          form.save()
    else:
       form = ConfigForm(Request.POST, instance = prov )
    return render_to_response('config.html',{'form':form},RequestContext(request))

我的 updateform.html

{% extends 'base.html' %}
{% block content %}
<form method='POST' action='' class='form'>
   <div class="form-group">
        {% csrf_token %}
        {{ form.as_p }}
   </div>
        <button type='submit' class="btn btn-primary">Grabar</button>
</form
{% endblock %}

我从其他表单传递 id 并且工作正常。 但是当我按下按钮保存时,会显示下一个错误:

 Page not found (404) Request Method: POST Request URL: http://127.0.0.1:8080/config/

 No Config matches the given query.

我不知道错误在哪里。 该错误仅在我尝试保存更改时出现 请帮忙

提前致谢

【问题讨论】:

  • 一旦提交表单,下次加载页面时,它是一个get请求,pk = request.POST.get('idprov')评估为None,这就是问题的原因。要验证,只要在这行后面加上print pk,你就会看到它是None
  • @Karth1kr 谢谢,我明白你的意思,但我想重定向到应用程序的主页,总是出现同样的错误。
  • 那是因为form.save之后没有重定向,重新加载了同一个页面。
  • 我放了 return HttpResponseRedirect('/index/') 什么也没发生,总是同样的错误

标签: python django django-forms django-views


【解决方案1】:

404页面来自这一行:

get_object_or_404(Config, id_proveedor=pk)

documentation 声明

Calls get() on a given model manager, but it raises Http404 instead of the model’s DoesNotExist exception.

您收到 404 是因为您没有匹配的型号。

【讨论】:

  • 感谢您的回复。但如果我删除它,我可以获得所选提供商的数据。我遵循文档并尝试使用查询集并出现其他错误。如何在不使用 get_object_or_404 的情况下检索数据
  • Config.objects.get(id_proveedor=pk) 应该这样做。
  • 抱歉打扰您,我听从您的建议并开始工作,但是当我按下按钮保存时,会出现另一个错误 DoesNotExist at /config/ 配置匹配查询不存在。我只想在点击保存按钮时将我重定向到索引页面。感谢您的关注,非常有帮助
  • DoesNotExist 表示您没有与您提供给get() 调用的数据匹配的模型。
  • 但我只是想更新一个与Id不同的字段,我不明白。我在该表中只有一条记录。我该如何更新。我需要重写所有视图,我很困惑,因为我知道模型和记录存在
猜你喜欢
  • 2021-05-16
  • 2016-01-18
  • 2020-10-07
  • 1970-01-01
  • 2021-07-30
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2018-09-12
相关资源
最近更新 更多