【问题标题】:User input not saved in model with Javascript用户输入未使用 Javascript 保存在模型中
【发布时间】:2012-11-01 06:29:26
【问题描述】:

建立一个网站,以便用户可以在网站上添加主题并进行问答。使用 AJAX,主页上的“添加媒体”按钮将我的添加媒体表单(文本和图像)加载到站点。该框使用正确的表单呈现良好,但点击提交后,表单不会保存在数据库中。当只是在没有 jquery 的情况下将表单呈现到新的 HTML 页面上时,模型工作得很好并且输入被保存。如何将 jquery lightbox 中提交的信息也保存到数据库中?

这是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>

【问题讨论】:

    标签: javascript jquery python html django


    【解决方案1】:

    如果您将 HTML 动态加载到您的页面中,action = "" 将指向当前页面,这显然无法处理您的 POST 请求。

    将操作设置为正确的 URL。

    【讨论】:

    • 所以我尝试了 action = "/home/", action = "/localhost/home/" 但都没有成功。请帮忙?谢谢!
    • @jpic 是正确的(尽管我的 urlconf 指向 /home/add_media/),仍然正确。太棒了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多