2016-03-24 4 views
0

У меня есть данные, которые отправляются с веб-страницы. Я пытаюсь повторно проверить данные на стороне сервера перед вставкой в ​​БД. По какой-то причине код POST не полностью выполнен. Он достигает проверки с помощью datetime.date() и возвращает. У меня ничего не получается.Ajax django POST-запросы заканчиваются prematuraly

печать экрана:

Новое назначение добавлено

Ожидаемый экран принты:

Новое назначение добавлено

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}); 

Отказ от ответственности: The код не может быть формой, поскольку визуальная манипуляция выполняется пользователем на странице. Для каждого ученика выполняется несколько вызовов с помощью ajax.

Update: Пробовал следующую отладку:

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")) 

Первые 2 заявления печатаются и третий не

печать экрана:

дата. сегодня(): 2016-03-24

запрос: 2016-03-30

ВАЖНО: от даты и времени импорта DateTime

ответ

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(): 
Смежные вопросы