jquery.load()関数を使用してポップアップdivにフォームを読み込んでいて、これまでうまく動作しています。私が追加したいのは、フォームがエラーで提出されたときに、現時点で実際のフォームページにリダイレクトするのではなく、エラーマークをフォームのポップアップdivにロードすることです。django jquery-form .load()フォームエラーの場合
誰かが、私が完全に動作すると思うjquery-formを使用することをお勧めしました。私はそれをどのように実装するのか分かりません。ここ
は.LOAD()関数である。ここで
$(document).ready(function(){
$(".create").on("click", function(){
$("#popupContact").load("/cookbook/createrecipe #createform");
});
});
は、フォームをロードするページです。ここ
<div id="popupContact" class="popup">
<a id="popupContactClose" style="cursor:pointer;float:right;">x</a>
<p id="contactArea">
</p>
</div>
<div id="backgroundPopup">
</div>
<div id="col2-footer">
{% paginate %}
</div>
は私のフォームテンプレートである:ここ
<div id="createform">
<h1>Create New Recipe</h1>
<form id="createrecipe" action="{% url createrecipe %}" method="POST">
<table>
{% csrf_token %}
{{ form.as_table }}
</table>
<p><input type="submit" value="Submit"></p>
</form>
</div>
jquery形式を使用しようとしています:
<script>
// wait for the DOM to be loaded
$(document).ready(function() {
var options ={
target: '.popup',
};
$('#createrecipe').submit(function() {
$(this).ajaxSubmit(options);
return false;
});
});
</script>
createrecipeビュー:
$('#createform form').submit(function(e) {
e.preventDefault();
$.post("/your views url/", {
data: $('#createform form').serialize(),
},function(data){ //this is the successfunction
//data is what your view returns}
});
あなたのビュー:
def createrecipe(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/index/')
else:
if request.method == 'POST':
print 1
form = RecipeForm(request.POST)
if form.is_valid():
print 2
recipe = form.save(commit=False)
recipe.original_cookbook = request.user.cookbooks.all()[0]
recipe.pub_date = datetime.datetime.now()
recipe.save()
user = request.user
cookbooks = user.cookbooks
cookbook = cookbooks.all()[0]
cookbook.recipes.add(recipe)
return HttpResponseRedirect('/account')
else:
form = RecipeForm()
return render_to_response('cookbook/createrecipe.html',
{'form':form},
context_instance=RequestContext(request))
ありがとう snackerfish
関数の後(データ){私はその関数に何を置きますか?申し訳ありませんが、最後にコードが表示されませんでした – snackerfish
csrfトークンを忘れていません... – jarred
jarred、私はエラーを言っていたことを願っています - 私が意味するものは、送信時にフィールドが欠落している場合、ボタンをクリックするとロードされたページにリダイレクトされ、load()divに同じページを表示する代わりに必要なフィールドが表示されます – snackerfish