ユーザーがサイトにトピックを追加して Q&A できるようにサイトを構築する。AJAX を使用して、ホームページの [メディアの追加] ボタンをクリックすると、メディアの追加フォーム (テキストと画像) がサイトに読み込まれます。ボックスは正しいフォームで正常にレンダリングされますが、[送信] を押した後、フォームがデータベースに保存されません。jquery を使用せずにフォームを新しい HTML ページにレンダリングすると、モデルは正常に機能し、入力が保存されます。jqueryライトボックスに送信された情報をデータベースにも保存するにはどうすればよいですか?
これがhtmlページです
#home.html
<a href="#login-box" class="btn btn-success">Add Media</a>
<div id="login-box" class="addmovie-popup">
これはそれに付随するjqueryです
#home.js
$(document).ready(function() {
$('.block3 a').click(function(ev) {
ev.preventDefault();
var url = $(this).attr('href');
$('#login-box').load('http://127.0.0.1:8000/home/add_movie/');
});
});
URL 設定
#urls.py
url(r'^add_media/$', 'add_media'),
メディアを追加するためのビュー
#views.py
def add_media(request):
if request.method == "POST":
form = MediaForm(request.POST, request.FILES)
if form.is_valid():
form.save(user = request.user)
return HttpResponseRedirect("/home//")
else:
form = MediaForm()
return render_to_response("qanda/add_media.html", {'form': form}, context_instance = RequestContext(request))
そして、それがレンダリングしている HTML フォーム
#add_media.html
<h1> Add Media:</h1>
<form enctype = "multipart/form-data" action = "" method = "post">{% csrf_token %}
{{ form.as_p }}
<input type = "submit" value = "Add" />
<input type = "hidden" name = "next" value = "{{ next|escape }}" />
</form>