我有从网页提交的数据。在插入数据库之前,我尝试重新验证服务器端的数据。由于某种原因,POST代码没有完全执行。它使用datetime.date()进行验证并返回。我没有收到任何错误或任何错误。
屏幕打印:
添加了新作业
预期的屏幕打印:
添加了新作业
的Test2
在此提交
以下代码适用于view.py:
def addStudent(request, assignment, studentID= -1):
#Check if POST
if request.method == 'POST':
errors = []
print "New assignment added"
#Verify exam date is future and end date is after start
if request.POST['startD'] <= datetime.date():
print "Error"
errors.append("Please verify date is in the future")
print "Test2"
if request.POST['endD'] < request.POST['startD']:
errors.append("Please verify end date>start date.")
print "Submit here"
return
return render(request,.....)
以下是调用它的代码:
$.ajax({type: 'POST',
url:'/assignment/newassignment/{{university}}/',
data:{
csrfmiddlewaretoken:'{{ csrf_token }}',
studentName:$("#studentName").val(),
startD:$("#startDate").val(),
endD:$("#endDate").val()},
async:true});
免责声明:代码不能是表单,因为用户在页面上进行了可视化操作。每个学生都会使用ajax进行几次调用。
更新: 尝试了以下调试:
if request.POST['startD']:
print "date.today():"+str(date.today())
print "request:"+str(request.POST['startD'])
print "myDate:"+str(datetime.strptime(request.POST['startD'], "%Y-%m-%d"))
打印前两个陈述,第三个陈述
屏幕打印:
date.today():2016年3月24日
请求:2016年3月30日
重要: 来自datetime import datetime
答案 0 :(得分:0)
我想您是因为您尝试将作为字符串(startD
/ endD
)传递的值与日期进行比较而导致服务器出错。您需要在比较之前将它们转换为日期
start = request.POST.get('startD')
if start:
start_date = datetime.strptime(request.POST.get('startD'), "%Y-%m-%d")
if start_date <= datetime.date():