0

建立一个站点,以便用户可以将主题添加到站点上,然后进行问答。使用 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/');
    });
}); 

网址配置

#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 回答