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值,从而第二下拉框输 ...
随机推荐
- python笔记37-史上最好用的发邮件zmail
简介 python发邮件之前用的是smtplib,代码太过于复杂,学习成本大,并且很多人学不会.之前专门写过一篇https://www.cnblogs.com/yoyoketang/p/7277259 ...
- Linux查看文件指定行数内容
1.tail date.log 输出文件末尾的内容,默认10行 tail -20 date.log 输出最后20行的内容 tail -n -20 date ...
- C#Winform使用CefSharp将WebBowser控件替换为Chrome内核
先废话一段 ,好久没写博客了,也是跟环境工作有关,之前做技术,天天博客园的翻着 (还是喜欢博客园,因为大家都无私分享交流啊,不像CSDN啥东西都要积分,鄙视之),现在偶尔需要个什么东西了才打开VS写写 ...
- Linux配置静态IP以及解决配置静态IP后无法上网的问题
式一.图形界面配置
- C++中指针形参问题
1.C++指针做形参,会有很多陷阱,很多时候也许并不如我们想的那样.比如我们想通过一个函数改变指针的值: #include<</SPAN>iostream> using nam ...
- JavaScript的深入理解(1)
(1)什么是JavaScript? JavaScript是一种专为与网页交互而设计的脚本语言,由三个部分组成:(1).ECMAScript :提供核心语言功能.(2).文档对象模型(DOM):提供访问 ...
- canvas做动画
一.绘制图片 ①加载图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- JavaScript高级程序编程(二)
JavaScript 基本概念 1.区分大小写,变量名test与Test 是两个不同的变量,且函数命名不能使用关键字/保留字, 变量命名规范: 开头字符必须是字母,下划线,或者美元符号,ECMAScr ...
- win7企业版激活
win7企业版激活:(亲测有效) 打开命令提示符,依次执行下面的代码,分别表示:安装win7企业版密钥,设置kms服务器,激活win7企业版,查询激活期限,kms一般是180天,到期后再次激活. sl ...
- 什么是TCP粘包?怎么解决这个问题
在socket网络编程中,都是端到端通信,由客户端端口+服务端端口+客户端IP+服务端IP+传输协议组成的五元组可以明确的标识一条连接.在TCP的socket编程中,发送端和接收端都有成对的socke ...