0

ユーザーがサイトにトピックを追加して 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>
4

1 に答える 1

0

ページに HTML を動的にロードしている場合action = ""、現在のページを指すことになり、明らかに POST リクエストを処理しません。

アクションを正しい URL に設定します。

于 2012-11-01T06:40:05.877 に答える