javascript - Django 和 javascript 并使用 URL 模板为 jvectormap 传递变量
问题描述
我一直在自学 python 和 Django,并想在网页上显示可点击的地图。我不知道 javascript,但我找到了 jvectormap,它似乎很简单而且效果很好。
但是我对模板标签感到困惑。使用下面的代码,我可以显示世界地图,使用 onregion 函数可以获取国家代码并将其发送到警报,如果我注释掉警报,我可以使用 Django URL 标签发送到另一个网页。
{% load static %}
{% load static %}
{{params}}
<!DOCTYPE html>
<html>
<head>
<title>jVectorMap demo</title>
<link href="{% static 'css/jquery-jvectormap-2.0.5.css' %}" rel="stylesheet" type="text/css" media="screen"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="{% static 'js/jquery-jvectormap-2.0.5.min.js' %}"></script>
<script src="{% static 'js/jquery-jvectormap-world-mill-en.js' %}"></script>
</head>
<body>
<div id="world-map" style="width: 600px; height: 400px"></div>
<script>
$(function(){
$('#world-map').vectorMap({ map: 'world_mill_en',
onRegionClick:function(event, code){
var message = (code);
alert( code );
window.location.assign ("{% url 'mainapp:home2' %}")
}
});
});
</script>
</body>
</html>
所以有几个问题:
- 我认为我应该能够在警报中使用模板标记,例如 alert( {{params}} ),但这似乎不起作用。我认为您可以通过这种方式在参数中传递字符串。我看到发现了一篇不同的帖子,建议用标签'''包装变量
''' 是使用标签将变量导入 javascript 的好方法吗?
- 更重要的是使用 URL 模板标签,我想将国家代码或其他信息传递回视图。在文档中,您可以使用:
{% url 'some-url-name' v1 v2 %}
或者
{% url 'some-url-name' arg1=v1 arg2=v2 %}
我将如何使用这种方法修改我当前的视图和 URL?
def home(request):
params='this is the home page '
return render(request,'mainapp/home.html',{'params':params})
我是否只是从用重定向替换返回开始?
return redirect('some-view-name', params= code )
然后设置一个 url 路径,其中代码作为 id 或 slug 或其他东西传递?
- 有没有不同的方法我应该尝试 onregion 或 java onclick 脚本将某些内容发送回 django?
很抱歉有多个问题,但在学习模式中......
解决方案
为了回答我自己的问题,我发现以下有关堆栈溢出的内容有助于理解。
在 Django url 模板标签中获取 javascript 变量的值
和其他几个。
简短的回答是,模板标签一旦渲染就只是 html 文件中的文本。
1) 您可以从模板标签中为 javascript 变量分配一些东西,但在某些情况下这可能不是一个好主意,因为它可能会被滥用。
2)由于模板标签只是文件中的文本,有办法放置一个占位符,然后使用 .replace 函数更改占位符,然后反转 URL。通常的方法似乎让占位符是一个永远不会被访问的数字,并用 pk 或对象 ID 替换占位符。
3)有人指出使用GET语句更好更简单。不知何故,AJAX 可以用来做到这一点。我只是在学习如何拼写 Ajax,所以我将把它留给其他人来解释。
推荐阅读
- excel - 需要excel公式来编译没有特定标识符的数据
- c# - 如何检测哪个scrollviewer(父或子)开始滚动?
- java - 对象不添加到另一个对象数组列表
- .net-core - SonarQube:无法导入测试覆盖率
- android - Intune 公司门户应用无法为企业托管的 Android 设备启动
- php - Linux 中的文件夹权限
- java - 如何通过 iCal4j 连接到 CalDav 日历?
- java - 从mysql表中删除所有行
- mosaic-decisions - 保存流程增量更改的历史记录,而无需在 Mosaic Decisions 中克隆它们
- java - 如何解决方法长度()