1

编辑

当我编写 print request.POST['video'] 时,即使存在 'video' 的值,控制台中也不会打印任何内容。我是否在 javascript 中错误地获取了错误的值?我试图让“video34”(隐藏字段中的值)显示出来。

原来的

我正在尝试在 Django 中使用 jQuery/AJAX 发布数据,但遇到了麻烦。如何访问 views.py 中的“视频”变量?当我在 views.py 中编写“打印视频”时,我在控制台中收到错误消息 POST /edit_favorites/HTTP/1.1" 500 10113。

视图.py

from django.shortcuts import render_to_response
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

@csrf_exempt
def edit_favorites(request):
    if request.is_ajax():
        message = "Yes, AJAX!"
    else:
        message = "Not Ajax"
    return HttpResponse(message)

网址配置:

url(r'^edit_favorites/', 'edit_favorites'),

html:

<form method='post' id ='test'>
     <input type="hidden" value="video34" />
    <input type='submit' value='Test button'/>
    
    <div id = 'message'>Initial text</div>
        
</form>

javascript:

<script type="text/javascript">
   $(document).ready(function() {
       $("#test").submit(function(event){
       event.preventDefault();
            $.ajax({
                 type:"POST",
                 url:"/edit_favorites/",
                 data: {
                        'video': $('#test').val() // from form
                        },
                 success: function(){
                     $('#message').html("<h2>Contact Form Submitted!</h2>") 
                    }
            });
            return false;
       });
       
    });
</script>
4

2 回答 2

4

它在 中request.POST['video'],就像在普通 POST 中一样。

于 2012-11-20T13:04:16.997 回答
2

在您在控制台中收到的消息中POST /edit_favorites/ HTTP/1.1" 500 10113,“500”是关键。这意味着您的服务器代码很可能有错误。在这种情况下,您试图“打印”一个不存在的变量。事实上,我很惊讶你没有看到NameError某个地方的回溯。

我不是 Django 用户,所以也许其他人可以提出更好的建议,但根据Django 文档,所有帖子参数都在request.POST其中是一个类似 dict 的对象。

我建议检查:

if request.method == 'POST':
    if 'video' in request.POST:
        video = request.POST['video']
        # Do stuff, etc...
    else:
        # Raise an error

那是在服务器端。在您的 HTML 中,您还需要为所有表单输入字段命名。例如<input name="video" type="hidden" value="video32" />之类的。您可能希望阅读有关 HTML 表单发布的更多信息。

于 2012-11-20T13:08:59.037 回答