我想从html页面中输入数据 然后保存到数据库的表中 由于我用的objects.create语句 设置了默认值 导致每次打开页面 就算没有输入提交 也会把默认值保存进去 但由于我表中有非空约束 所以我在views中去掉默认值就会报错 这种情况应该怎么解决呀
views.py
#添加学生
def stuadd(request):
from app1 import models
data=[]
sn=request.POST.get('sn')
cid=int(request.POST.get('cid'))
temp={'sn':sn,'cid':cid}
data.append(temp)
models.Stu.objects.create(stu_name=sn,class_id=cid)
return render(request,'stuadd.html',{'data':data})
stuadd.html
{%extends 'main.html'%}
{%block main%}
<form name='s_add' method='post' action=''>
姓名:<input type='text'
name='sn'
value='null'
size='10'
/>
班级:<input type='text'
name='cid'
value='0'
size='10'
/>
<button type='submit'> submit </button>
</form>
{%endblock%}
百度半天没找到解决方法 希望有人指点
公用一个页面要判断是否是post提交或者判断有数据再入库,代码改成下这样
#添加学生
def stuadd(request):
data=[]
if request.method == 'POST':##POST提交,而不是get访问在入库
from app1 import models
sn=request.POST.get('sn')
cid=int(request.POST.get('cid'))
temp={'sn':sn,'cid':cid}
data.append(temp)
models.Stu.objects.create(stu_name=sn,class_id=cid)
return render(request,'stuadd.html',{'data':data})
你的视图函数没有对HTTP请求进行判断,你打开网页是发送get请求,也会创建一条数据,你要在post请求才能创建数据,改成这样试试
#添加学生
def stuadd(request):
from app1 import models
data=[]
if request.method == 'POST':
sn=request.POST.get('sn')
cid=int(request.POST.get('cid'))
temp={'sn':sn,'cid':cid}
data.append(temp)
models.Stu.objects.create(stu_name=sn,class_id=cid)
return render(request,'stuadd.html',{'data':data})
你可以换种请求方式呢ajax
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!