gpt4 book ai didi

javascript - Django Ajax POST 空错误 500

转载 作者:行者123 更新时间:2023-11-30 20:53:47 24 4
gpt4 key购买 nike

我试图让用户使用 cropper.js 从图像中选择 x 和 y 坐标,并使用 ajax 将数据传递到下一个 View 。我正在使用 Django 1.9.4。我也没有真正使用过 Javascript,Javascript 部分不是我写的。

使用 Firefox Dev Tools Network 选项卡时,我似乎收到了 500 Internal Server Error。在 Dev Tools View 中,请求具有所需的 JSON 数据。但是 Django 似乎无法正确处理请求。为什么?

views.py 中的相关部分:

def render_stl(request):
print("Got to STL render")
if request.method == 'POST':
print("BELOW DATA")
print(request.POST) # <QueryDict: {}>
print(request.is_ajax()) # False
print(request.POST.__dict__) # {'_encoding': 'utf-8', '_mutable': False}

# This is old from a former version, but should be updated if ajax works
x_start = request.POST.get("x_start")
z_start = request.POST.get("z_start")
x_end = request.POST.get("x_end")
z_end = request.POST.get("z_end")

print(x_start, z_start, x_end, z_end)
run_stl_render(x_start, z_start, x_end, z_end)

# os.chdir(settings.MEDIA_ROOT)
stl_file = open(settings.MEDIA_ROOT + "/mySTL.stl", "r")
django_file = File(stl_file)


return render(request, 'img_crop/render_stl.html', {'django_file': django_file})

网址.py:

urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^render_img$', views.upload_file, name='render_img'),
url(r'^render_stl$', views.render_stl, name='render_stl'),
url(r'^download_stl$', views.download_stl, name='download_stl'),
# url(r'^media/mySTL.stl', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),

]

Javascript(csrftoken 在另一个函数中定义):

 sendDataOfCroppedImage = function(dataOfCroppedImage) {
// var data = 'data : [' + JSON.stringify(dataOfCroppedImage) + ']';
var data_s = JSON.stringify(dataOfCroppedImage);
console.log('data',data_s);
$.ajax({
async: true,
crossDomain: true,
method: 'POST',
data: data_s,
dataType: 'json',
headers: {
'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest',
'content-type': 'application/json',
'cache-control': 'no-cache',
'X-CSRFToken': csrftoken
},
url: 'render_stl',
success: function () {
console.log('sendDataOfCroppedImage okay');
}
});
},

模板:

<html>
{% load staticfiles %}
<head>
<title>
Your rendered image
</title>
<script src="{% static 'img_crop/js/jquery-3.2.1.js' %}"></script>
<script src="{% static 'img_crop/js/cookie.js' %}"></script>
<script src="{% static 'img_crop/js/cropper.js' %}"></script>

<link href="{% static 'img_crop/css/cropper.css' %}" rel="stylesheet">
<style>
#image {
max-width: 100%;
}
</style>
</head>
<body>
<h1>Hier ist das generierte Bild aus Ihrer Welt!</h1>
<h2>Wählen Sie nun Ihren Bereich aus: </h2>

<div style="overflow: hidden; width: 400px; height: calc(400px / 16 * 9);">
<div>
<img id="image" src="{% static "img_crop/MC2px.png" %}" alt="Rendered image"/>
</div>
</div>

<button id="getDataBtn" class="button get-data">Submit Choice</button>

最佳答案

request.POST 仅适用于表单编码数据。如果您要发送 json 编码的数据,那么您应该访问 request.body

data = json.loads(request.body.decode('utf-8'))

如果 DEBUG=True 时出现 500 错误,那么您应该能够使用浏览器开发工具查看回溯。如果 DEBUG=False,则查看您的日志或发送给站点管理员的错误电子邮件。

关于javascript - Django Ajax POST 空错误 500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47888639/

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