gpt4 book ai didi

python - 表单提交而不是 POST 是 Django 中的值

转载 作者:行者123 更新时间:2023-12-01 05:34:12 25 4
gpt4 key购买 nike

当我只是尝试使用这个简单的表单保存数据时,它没有被发布。操作或 url 的声明是否有问题?

这里 request.method 是 GET 而不是 POST,尽管表单方法设置为 POST

模型文件

   from django.db import models

# Create your models here.
class Contact(models.Model):

name = models.CharField(max_length=30, null=True, blank=True)
company_id = models.CharField(max_length=30)

def __unicode__(self):
return self.name

Form.py 使用模型表单

from contact.models import Contact
from django.forms import ModelForm

class AddcntForm(ModelForm):
class Meta:
model = Contact

观看次数

from contact.forms import AddcntForm
from django.contrib import messages
from django.shortcuts import render_to_response, redirect, get_object_or_404
from django.template.context import RequestContext

def add_cnt(request, form_class=AddcntForm):

print request.method
if request.method == 'POST':
form = form_class(request.POST)
if form.is_valid():
form.save(request)
messages.success(request, "New Contact added.")
return redirect('##success##')
else:
form = form_class()
return render_to_response(
'vec/add_cnt.html',
{'form': form},
context_instance=RequestContext(request))

网址

from django.conf.urls import *
from django.conf import settings
urlpatterns = patterns('contact.views',
url(r'^addcnt/$', 'add_cnt', name='add_cnt'),
)

模板文件如下

{% block content %}
<form method="post" action="/hr/addcnt/" >{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Ok" />
</form>
{% endblock %}

最佳答案

当方法为 POST 时,您将 request.GET 查询字典传递到表单。您应该改为传递 request.POST

此外,您还将请求传递给 form.save()。 ModelForm.save() 期望的唯一(可选)参数是一个 bool “提交”标志,如果为 true,则会阻止表单有效保存实例(参见 https://docs.djangoproject.com/en/1.5/topics/forms/modelforms/#the-save-method )。请记住,在 Python 中,每个对象都有一个 bool 值...IOW,您所说的形式是保存您的实例;)

关于python - 表单提交而不是 POST 是 Django 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19493046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com