django:下拉框二级联动实现
注意:只列举核心部分代码
前台模板:
第一级下拉菜单:
<div class="col-sm-4">
<select data-placeholder="选择项目..." class="form-control" name="project_id" id="db_link" required="required">
<option value="">请选择数据库连接</option>
{% for item in res %}
<option value="{{ item.id }}" hassubinfo="true">{{ item.link_name }}</option>
{% endfor %}
</select> </div>
第二级下拉菜单:
<div class="col-sm-4">
<select data-placeholder="选择基础表." class="form-control" name="project_id" id="db_table" required="required">
// 这里放置回调函数渲染的内容
</select>
</div>
对应js:
<script>
$("#db_link").change(function() {
var options=$("#db_link option:selected"); //获取选中的项
var db_link_id = options.val(); //获取选中的值
{#alert("ok");#}
alert(db_link_id); // 选择id=db_link的元素时触发该ajax请求,调用/comparison/get_table接口
$.ajax({
url: '/comparison/get_table',
data: {"db_link_id": db_link_id},
type: 'GET',
dataType: 'json',
success: function (data) {
var content='';
{#alert(123456);#}
$.each(data, function(i, item){
// 调用接口后返回list数据[u'account_role', u'account_user'],循环遍历该list拼接选项的内容
content+='<option value='+item+'>'+item+'</option>'
});
// 将拼接好的内容作为id=db_table这个select元素的内容
$('#db_table').html(content)
},
}) })
</script>
视图函数:
def get_table(request):
"""
当选择数据库连接时,联动查询出该库的表,供下拉选择
:return:
"""
if request.method == 'GET':
# 获得前台传递来的id,查询对应的数据库连接信息
db_link_id = request.GET.get('db_link_id')
print '从前台获得的id为:%s' % db_link_id
# 获取数据库类型和数据库名称
db_link_info = LinkDBInfo.objects.get(id=db_link_id)
# 当使用model_to_dict时orm只能是get,不能是filter
db_link_info_dict = model_to_dict(db_link_info)
print db_link_info_dict
# 根据不同数据库类型选择不同的连接库方式
if db_link_info_dict['type'] == 'mysql': conn = pymysql.connect(db_link_info_dict['host'], db_link_info_dict['db_username'], db_link_info_dict['db_pwd'], db_link_info_dict['db_name'], charset='utf8')
cursor = conn.cursor()
# db_name = "select db_name from comparison_linkdbinfo where id='%s'" % db_link_id
# print db_name
# 查询该库中的所有表
get_all_table_sql = "select table_name from information_schema.tables where table_schema= '%s'" % db_link_info_dict['db_name']
cursor.execute(get_all_table_sql)
data = list(cursor.fetchall())
print data
table_list = []
for i in data:
table_list.append(i[0])
# print data_list
print table_list
return JsonResponse(table_list, safe=False)
django:下拉框二级联动实现的更多相关文章
- C# MVC LayUI实现下拉框二级联动
一.layui.use 1.LayUI的官方使用文档:https://www.layui.com/doc/ 2.layui的内置模块不是默认就加载好的,必须要执行启动模块的这种方法后模块才会加载: 3 ...
- asp 下拉框二级联动
<script language = "JavaScript"> //js开始 var aaa;//定义aaa变量 aaa=0;//aaa赋0 bb = new Arr ...
- js下拉框二级关联菜单效果代码具体实现
这篇文章介绍了js下拉框二级关联菜单效果代码具体实现,有需要的朋友可以参考一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transit ...
- ASP.NET——实现两个下拉框动态联动
引入: 在网页中,我们经常会遇到下图中的情况.首先在下拉框中选择所在的省,选择之后,第二个下拉框会自动加载出该省中的市.这样设计极大的方便了用户的查找.那这是如何实现的呢? 1.建立数据库 " ...
- 通过创建元素从而实现三个下拉框的联动效果(create.Element("option"))和提交表单时的验证p.match("请选择")
<html> <head> <meta charset="utf-8"> <title>下拉框</title> < ...
- Excel下拉选项二级联动
在日常工作中,难免遇到操作excel的时候,二级联动下拉选项多用于像地市区县的应用场景 1)先把要联动的内容准备好,把它放到第二个sheet页中 2)操作级联的文本 全部选中之后,Ctrl+G -- ...
- WebForm使用AngularJS实现下拉框多级联动
数据准备 ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, CateId = , ...
- 下拉框多级联动辅助js,优化您的下拉框
function IniteSelect(options) { $("body").IniteSelect(options) } (function ($) { $.fn.Init ...
- vue 获取数据联动下拉框select ,并解决报Duplicate value found in v-for="...": "". Use track-by="$index" 错误
公司项目中遇到一个问题,联动下拉框,并且数据是使用vue-resource从后台获取的,格式不利于输出联动下拉框,联动下拉框是第一个下拉框输出一个数组里每一项json的一个text值,从而第二下拉框输 ...
随机推荐
- Mac在zsh环境安装Maven
Mac OS先安装了oh-my-zsh和iterm2,设置系统的默认语言为zsh.再安装Maven的时候,发现添加profile文件,关闭iterm后,mvn的环境变量一直没有生效. 折腾了好久,突然 ...
- monkey内存泄露
monkey内存泄露 1.内存泄露发现方法 执行monkey测试时有时会有内存泄露情况,可以进行排查 a.手机弹出out of memory对话框--基本确定有内存泄露 b.手机没有提示但是实际有内 ...
- Alpha冲刺(8/10)——追光的人
1.队友信息 队员学号 队员博客 221600219 小墨 https://www.cnblogs.com/hengyumo/ 221600240 真·大能猫 https://www.cnblogs. ...
- java项目部署到LIINUX
天领导给个任务,把java项目部署到liunx服务器上.现记录步骤,方便以后查看.项目部署服务器步骤:服务器信息:弹性IP地址:xx.xx.xxx.xx账号:root密码:cjw@100 数据库信息: ...
- JAVA项目部署到云服务器
转自:(此处更详细)http://blog.csdn.net/gulu_gulu_jp/article/details/50994003 一.前言 前面我们已经尝过了在云服务器上部署代码的甜头了,现在 ...
- python变量选中后高亮显示
file>settings>editor>color scheme>general>code>identifier under caret>backgroun ...
- Python垃圾回收机制?
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾.在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的 ...
- If...else 条件判断和If else嵌套
If(条件表达式){ 如果条件表达式结果为true,执行该处代码. 如果条件表达式结果为false,执行下边代码. }else{ 如果条件表达式结果为false,执行该处代码. } If(条件表达式) ...
- Linux 系统管理——磁盘管理及文件系统实例
1.为主机新增两块30GB的SCSI硬盘 2.划分3个主分区,各5GB,剩余空间作为扩展分区 3.在扩展分区中建立2个逻辑分区,容量分别为2GB.10GB 4.将第一个逻辑分区的类型改为swap 5. ...
- Tex家族关系
小书匠 声明:文章自一份其实很短的 LaTeX 入门文档学习,整理所得. Tex家族关系 Tex家族关系图 1.排版引擎 1.所谓的引擎,是指能够实现断行.分页等操作的程序(请注意这并不是定义) 2. ...