gpt4 book ai didi

javascript - POST 请求未被 Django 服务器捕获

转载 作者:行者123 更新时间:2023-11-28 02:13:30 24 4
gpt4 key购买 nike

我有一个在 http://localhost:8000 本地运行的 Django 服务器,并通过 URL /register/ 设置了 View 。

我有一个带有表单的 html 文件。 View 已正确显示。但是当我按下按钮时,应该生成 POST 请求,但 Django 没有收到任何请求。

我不知道我是否设置了错误的主机来发帖,或者我遇到了不同的问题,因为当从 Firefox for windows 测试 jsFiddle 时,我可以使用 Firebug 看到 POST;但是如果我在 Ubuntu 上使用 Firefox&Firebug,在运行 Django 的虚拟机上,Firebug 不会捕获任何 POST 请求。

#views.py
def formExample1(request):
print 'RECEIVED REQUEST: ' + request.method
if request.method == 'POST':
startHour = request.REQUEST['starthour']
endHour = request.REQUEST['endhour']
return HttpResponseRedirect('http://www.google.es')
else: #GET
return render(request, 'formExample1.html')

urls.py

urlpatterns = patterns('',
url(r'^register/$', 'helloworld.views.formExample1'),
)

formExample1.html 看起来像这样:

<script>
...
// Play button
$( "#id_playButton" ).click(function() {
var postdata = {
'starthour': $("#id_interval").slider("values", 0),
'endhour': $("#id_interval").slider("values", 1)
}
$.post('register/', postdata)
});
</script>

最佳答案

我的示例没有几个明显的问题,您应该阅读 forms .

这是使用您的代码的快速示例...

def formExample1(request):
print 'RECEIVED REQUEST: ' + request.method
if request.method == 'POST':
form = YOURFORM(request.POST)
if form.is_valid():
startHour = form.cleaned_data['starthour']
endHour = form.cleaned_data['endhour']

如果您想使用 POST 值(坏主意),那么...

def formExample1(request):
print 'RECEIVED REQUEST: ' + request.method
if request.method == 'POST':
startHour = request.POST['starthour']

etc

但是,即使这仍然可以做得更好,为什么你甚至在这里分配 startHour 等?

最后一个问题(如果post数据仍未发送)是jquery问题。查看这篇文章:Get POST data in django form AJAX from

从表面上看,您也没有发布真实的表单,因此缺少 csrf_token,您需要将其添加到您的脚本中,即...

 csrfmiddlewaretoken: '{{ csrf_token }}'

或者,如果您愿意(但有理由反对这样做),只需在 View 上方添加 @csrf_exempt 即可使其豁免。

关于javascript - POST 请求未被 Django 服务器捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16734425/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com