【发布时间】:2022-07-08 01:30:08
【问题描述】:
我对 django 很陌生,正在努力做一些简单的事情。我正在使用数据可视化构建地图,我正在向用户展示一个简单的 svg-map,这将有助于执行以下操作: 1-用户将点击地图的其中一个区域。 将显示该特定选定区域的 2 数据可视化。
首先,我使用 Jquery、ajax 调用 python 发送区域名称(我从 svg 路径获得),这是我的 main.js:
$(document).ready(function(e) {
$('path').on('focus', function(e) {
e.preventDefault();
$('#selection').html($(this).attr('name'));
var gov = $('#selection').text();
console.log(gov)
var obj = { gov}
$.ajax({
type: 'POST',
url: '/map/',
contentType: 'application/json; charset=utf-8', //EDITED
data: gov,
success: function(data) {},
error: function(rs, e) {
}
});
});
});
然后,我将名称发送给 python,这就是 my views.py 的样子:
[views.py][1]
from django.shortcuts import render
import numpy as np
import pandas as pd
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
# Create your views here.
@csrf_exempt
def map(request):
if request.method=='POST':
data = request.body.decode("utf-8")
gover=str(data)
print(gover)
df = pd.read_csv('https://raw.githubusercontent.com/-/datandvi/main/ndvid.csv',
encoding='utf-8',na_values=None)
d = df[(df['Date'] >= '1984-01-01') & (df['Date'] <= '1985-01-01') & (df['Province'] ==gover )]
print(d)
datadate = d[['Date']].values.tolist()
dataplot = d[['Data_long_term_Average']].values.tolist()
def numpy_flat(a):
return list(np.array(a).flat)
k = numpy_flat(dataplot)
k1 = numpy_flat(datadate)
context={ 'gover':gover,'k': k, 'k1': k1 }
return render(request,'index.html',context)
else:
return render(request,'index.html')
这里
每次我选择区域时,我想显示的数据都会打印在终端中 选择区域的数据被打印但不发送到 html 页面,上下文变量为 empty 。 你能帮忙吗? here is my index.html
--urls.py
【问题讨论】:
-
我们看不到您的任何 Python 代码,但听起来您正在使用
print来生成结果。相反,您必须将结果作为字符串返回。 -
是的,我现在编辑帖子,是的,我通过像 gover 这样的上下文传递了字符串值,但是当我检查页面时,值是空的
-
对。唯一被发送回 Web 浏览器的是函数中的
return。在这种情况下,这将呈现index.html模板。如果你想返回一个 JSON 结果让你的 Javascript 解包,你可以这样做,但是你需要从你的 Python 代码中返回那个 JSON 字符串。现在,您的 AJAX 请求只是丢弃了它返回的结果。 -
我在 main.js 中传递了 data:JSON.stringify(gov) 而不是 data:gov,我在终端中选择了字符串值:“name”但是当我通过时数据框为空 ...( df['Province'] ==data),我也在视图中尝试过 gover=json.dumps(data) print(gover) 它打印“\”name\“”
标签: javascript python jquery django ajax