Django表单未提交
Posted
技术标签:
【中文标题】Django表单未提交【英文标题】:Django form not being submitted 【发布时间】:2012-03-09 06:40:49 【问题描述】:我有一个在模板中正确呈现的 Django 模型/视图/表单,但它没有提交输入到数据库的数据。对此的任何帮助将不胜感激!
#models.py
from django.db import models
from django.forms import ModelForm
class UserRegistration(models.Model):
user_first = models.CharField(max_length=50)
user_last = models.CharField(max_length=50)
user_email = models.EmailField()
#user_fantasyhost = models.CharField(max_length=50)
def __unicode__(self):
return u'%s %s %s' % (self.user_first, self.user_last, self.user_email)
class RegForm(ModelForm):
class Meta:
model = UserRegistration
#views.py
from django.shortcuts import render_to_response
from django.shortcuts import render
from django.http import HttpResponse, HttpRequest, HttpResponseRedirect
from acme.dc_django.models import UserRegistration
from acme.dc_django.models import RegForm
def regPage(request, id=None):
form = RegForm(request.POST or None,
instance=id and UserRegistration.objects.get(id=id))
if request.method == 'POST' and form.is_valid():
form.save()
return HttpResponseRedirect('/league_setup/')
user_info = UserRegistration.objects.all()
context =
'form':form,
'user_info' :user_info,
return render(request, 'regpage.html', context)
#repage.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML lang="en">
<head>
<title>User Registration</title>
</head>
<body>
<form method="POST" action="/league/">
% csrf_token %
<table> form </table>
<input type="submit" value="Create Account"
</form><br /><br />
</body>
</HTML>
感谢您的帮助,
dp
【问题讨论】:
您还没有关闭表单提交标签,但这可能只是一个错字,您的浏览器可能可以处理它。这类问题往往比我们更容易调试。观点错在哪里?在视图中放置一些打印语句以找出答案。例如,form.is_valid()
的值是什么。
您能否详细说明什么不起作用?我发现but it is not submitting the data that is input to the database
令人困惑
我没有收到错误,当我回到我的桌面时,我将包含打印语句。问题是当我点击提交按钮时,什么都没有发生——什么都没有。既然你指出了打开的标签,我会看看这是一个错字还是问题所在。以后再说。谢谢。
我关闭了提交标签,现在提交按钮将我带到正确的页面,但数据从未写入数据库,我将插入打印语句...
请更新代码示例
【参考方案1】:
我试过你的代码。您的问题是您的 html form 标签 的 action 属性设置为“/league/”。
除非 reqPage url 实际上是“/league/”,否则它将不起作用。当我将action="/league/"
更改为action=""
时:
<HTML lang="en">
<head>
<title>User Registration</title>
</head>
<body>
<form method="POST" action="">
% csrf_token %
<table> form </table>
<input type="submit" value="Create Account" />
</form><br /><br />
</body>
</HTML>
表格确实起作用了:
In [3]: UserRegistration.objects.all()
Out[3]: [<UserRegistration: aoeu oeu oeu@aeou.com>]
【讨论】:
在看到你的回答之前,我做了同样的事情,得到了同样的结果!谢谢您的帮助! dp以上是关于Django表单未提交的主要内容,如果未能解决你的问题,请参考以下文章