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值,从而第二下拉框输 ...
随机推荐
- JQuery DOM操作(属性操作/样式操作/文档过滤)
jQuery——入门(三)JQuery DOM操作(属性操作/样式操作/文档过滤) 一.DOM属性操作 1.属性 (1).attr() 方法 语法:$(selector).attr(name|prop ...
- 动态创建自绘的CListBox注意事项
Create(WS_VISIBLE|WS_CHILD|LBS_NOTIFY|LBS_OWNERDRAWFIXED|LBS_HASSTRINGS|LBS_NOINTEGRALHEIGHT ,rcWnd, ...
- Python 代码混淆和加密技术
动机 Python进行商业开发时, 需要有一定的安全意识, 为了不被轻易的逆向. 混淆和加密就有所必要了. 混淆 为了增加代码阅读的难度, 源代码的混淆非常必要, 一个在线的Python代码混淆网站. ...
- junit4的进一步探讨
上次只是大概记录了下junit4几个常见标签的用法. 在这篇文章中,我们来进一步分析junit4的用法. 1.断言 junit4中一个很常见的用法就是断言.说到断言,大家再熟悉不过了.不过也许有的朋友 ...
- presto docker简单试用
starburstdata 团队提供了一个docker 版本的presto,其中已经内置了几个connectors tpch tpcds memory backhole jmx system pull ...
- hive select 出现问题 SemanticException
由于把hadoop的以下配置项 <property> <name>fs.defaultFS</name> <value>hdfs://localhost ...
- 2019 SDN第二次上机作业
2019 SDN第二次上机作业 1. 利用mininet创建如下拓扑,要求拓扑支持OpenFlow 1.3协议,主机名.交换机名以及端口对应正确,请给出拓扑Mininet执行结果,展示端口连接情况 创 ...
- 解决PHP7无法监听9000端口问题/502错误解决办法
问题背景 昨晚帮配置nginx+php服务的时候,发生了一个奇怪的事情netstat -anp|grep 9000查看9000端口,一直没有监听,于是nginx无法通过fastcgi来代理php请求. ...
- 年轻人的第一个 Spring Boot 应用,太爽了!
Spring Boot 大家都知道是啥吧? 还有不知道的来看这篇扫下盲:告诉你,Spring Boot 真是个牛逼货!. 顺便再往下看,栈长给你带来年轻人的第一个 Spring Boot 应用,撸码史 ...
- ssm框架中,项目启动过程以及web.xml配置详解
原文:https://blog.csdn.net/qq_35571554/article/details/82385838 本篇主要在基于SSM的框架,深入讲解web.xml的配置 web.xml ...