我有一个概念性问题。
我目前正在使用ajax调用将数据从数据库发送到django模板以填充页面上的图表
urls.py
urlpatterns = [
path('chartdata1/', tracker.get_chart_data_json1, name="global_trend_chart"),
]
views.py
def get_chart_data_json1(request):
data = {}
cd = ChartData.get_global_trend()
data['chart_data'] = cd
return HttpResponse(json.dumps(data, default=str), content_type='application/json')
HTML / JAVASCRIPT
var chartDataUrl = "{% url 'global_trend_chart' %}"
$.getJSON(chartDataUrl,
function(data) {
chartOptions.xAxis.categories = data['chart_data']['date'];
chartOptions.series[0].data = data['chart_data']['confirmedcases'];
var chart = new Highcharts.Chart(chartOptions);
})
虽然此方法工作正常,但我不希望人们能够直接访问url(即,我不希望他们能够通过访问myurl.com/chartdata1来访问json数据)。我只希望django模板可以访问此视图/数据,以在其中填充图表。我也不需要用户登录才能查看主页,所以也不想对视图创建@login_required限制
我有什么办法可以保护myurl.com/chartdata1终结点,使其只能由图表使用?
谢谢
如果您的数据敏感,则应考虑设置令牌身份验证。在Django Rest Framework中查看身份验证。
def load_graph_html(request):
data = dict()
context = {
#some context data
}
data['graph_html'] = render_to_string('graph.html', context, request=request)
return JsonResponse(data)
Ajax示例
$.ajax({
"url": url,
"dataType": "json",
"type": "GET",
"success": function (data) {
$("#rigadmin_order_form_loaded_area").html(data.graph_html)
}
});