2015-10-03 7 views
0

У меня есть проблемы с представлением формы:Django-Ajax: Форма представления

Мой сценарий JS:

function submit_form(){ 
    var form = $("#theform").serializeArray(); 
    var the_players = document.getElementsByName("theplayers"); 
    var tab_players = []; 
    for(variable of the_players){ 
     var name = variable.id.split("_")[1]; 
     tab_players.push(variable.value); 
     } 

    // *** I send a tab and THE FORM *** 
    $.post("/myview_players",{"theplayers[]": tab_players,"form[]":form}).done(function(data){window.location.reload();}); 

    return false; 
} 

И вид (URL: 'myview_players'):

... 
if request.method == "POST":  
    requete = request.POST 
    if requete.is_ajax() : 
     form = playersForm(requete.get("form")) 

     if form.is_valid() : 
      print("Valid ! ") 
     else : 
      print("Not valid...") 
     ... 

Я передаю аргумент игрокам формы, форму, отправленную Ajax. В терминале отображается сообщение «Недействительно» ... Почему?

+0

Django forms полагается на фактический объект '' POST''', поэтому в него не работает одно поле. Особенно, если это поле является строкой. Может быть, с dict он будет работать. Проверьте, какой тип вы получаете от 'requete.get ('form')'. – GwynBleidD

+0

so requete.get ('form') return None, но requete.getlist ('form []') return: [u '[object Object]', u '[object Object]', u '[object Object]'])! и requet.get ('form []') возвращает u '[object Object]' ... Я ничего не понимаю ... – Zoulou

ответ

0

Изменить реквизит для запроса на ваш взгляд. Проверка орфографии?

Кроме того, в $ .post, если вы передадите форму «form []»: form, представление будет ожидать список. Попробуйте сделать "форму": форма

0

После многих исследований я нашел решение:

form_data = parse_qs(request.POST['form'].encode('ASCII')) 
query = QueryDict(request.POST['form']) 
form = playersForm(query) 

Это работает, когда я делаю: form.cleaned_data [ ''] name_of_field

Что вас думать ? Это хорошее решение?

Смежные вопросы