Форум сайта python.su
1
Извиняюсь за задержку.
Хотел разв́рнуто написать, но честно говоря, сил нету всё расписывать.
Вам надо передавать не только поля формы, а и путь екшена вместе с каждой формой. Иначе как указать путь по которому должен уйти каждый post?
Напрямую передать файлы используя джаваскрипт нельзя - надо использовать фрейм.
Изобретать велосипед не обязательно — есть jquery form.
Офлайн
0
Ferroman
Спасибо! У меня и ща нет сил… Праздники…
Но от слов к вопросу.
Спасибо. Чувствую то что Вы предложили с jquery form это то что нужно. Но что то тыкаюсь мыкаюсь, а результат - либо ничего не работает, либо опять тупо редиректит на внешнюю страницу и всё - т.е. весь контейнер “пропадает” (в этом случае все загружается на сервер).
Пишу форму след вида:
<form action="http://localhost:8000/My_project/upload/panorama" method="post" enctype="multipart/form-data" >{% csrf_token %}
{{ form.as_p }}<br>
<input type="submit" name="submit" value="Upload" id="submit">
</form>$('#panorama_add').click(function () {
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama/");
});$('#panorama_add').click(function () {
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama",
function(){
$('#submit').click(function(){
$('#contentContainer').ajaxForm(function(){ // Т.е. по клику я хочу в этот же #contentContainer вывести сообщение, или подставить html страничку
alert("Thank you for your comment!");
});
});
});
}
);Отредактировано (Янв. 9, 2011 17:42:25)
Офлайн
0
Ferroman
Пытаюсь сделать так:
$(document).ready(function(){
$('#panorama_add').click(function(){ // При клике по #panorama_add загружаю страницу с формой загрузки в контейнер #contentConatainer
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama",
function(){
$('#forma').ajaxForm(function(){ // Пытаюсь прибайндиться, как в http://jquery.malsup.com/form/#getting-started
alert('Uploaded OK!!!');
});
});
});
});<form id="forma" action="http://localhost:8000/My_project/upload/panorama" method="post" enctype="multipart/form-data" >{% csrf_token %}def save_view_panorama(request):
if request.method == 'POST':
form = PanaromaForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return HttpResponseRedirect('ok/') // Вот здесь!
else:
form = PanoramaForm()
template = 'Upload/form_upload_panorama.html'
return render_to_response(template,
{'form': form},
context_instance=RequestContext(request))
Офлайн
0
Так, с тем как в контейнер поместить ту или иную страницу после отправки формы в тот же контейнер, в котором была форма разобрался:
$('#panorama_add').click(function(){
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama", function(){
$(document).ready(function(){
$("#forma").ajaxForm(function(){
$("#contentContainer").load("http://localhost:8000/My_project/upload/panorama/ok");
});
});
});
}); {% block content %}<h1> Upload panorama {{ object }} </h1>
{% if form.errors %} // Здесь и начинается проверка
<p style="color: black; background: magenta; "> // В зависимости от незаполненных полей над ними появляется надпись. Красным
Requered fields: {{ form.errors|pluralize }}
</p>
{% endif %}
<form id="forma" action="http://localhost:8000/My_project/upload/panorama/" method="post" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<br>
<input type="submit" value="Upload">
</form>Офлайн