将字典类型数据添加到下拉列表(select 表单元素)
add dicitonaries type data to dropdown (select form element)
我有一个代码可以列出从数据库到下拉列表的所有数据
def makeDictFactory(cursor):
columnNames = [d[0] for d in cursor.description]
def createRow(*args):
return dict(zip(columnNames, args))
return createRow
def list_all_table(request):
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('', '', sid='')
conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns)
c = conn.cursor()
c.execute("select table_name from all_tables")
c.rowfactory = makeDictFactory(c)
for rowDict in c:
context = {
'obj2':rowDict
}
#database_table = c.fetchall()
return render(request,'define_segment.html',context)
这是html代码
<div class="btn-group">
<select style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">
{% for table in obj2 %}
<option>{{ table.table_name }}</option>
{% endfor %}
</select>
</div>
如何将参数传递给HTML中的obj2,我感觉我的观点不对,需要帮助解决,谢谢
P.S : 我需要这个 views.py
来从这个代码中创建一个依赖下拉列表
所以我已经知道答案了,所以我必须先把它追加到列表中,因为当我不把它追加到列表中时,它会显示最后一行,为什么不显示?因为在 html 中我使用 table.table_name ,正确的方法是写 table 只是因为 table 已经拥有 obj2 中没有 columnName 的所有数据。所以 table 只会完成工作
这是我写的
VIEWS.PY
def makeDictFactory(cursor):
columnNames = [d[0] for d in cursor.description]
def createRow(*args):
return dict(zip(columnNames, args))
return createRow
def list_all_table(request):
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('', '', sid='')
conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns)
c = conn.cursor()
c.execute("select table_name from all_tables")
c.rowfactory = makeDictFactory(c)
databasetable = []
for rowDict in c:
databasetable.append(rowDict['TABLE_NAME'])
context = {
'obj2' :databasetable
}
return render(request,'define_segment.html',context)
html代码
<div class="btn-group">
<select style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">
{% for table in obj2 %}
<option>{{ table }}</option>
{% endfor %}
</select>
</div>
而且有效!
我有一个代码可以列出从数据库到下拉列表的所有数据
def makeDictFactory(cursor):
columnNames = [d[0] for d in cursor.description]
def createRow(*args):
return dict(zip(columnNames, args))
return createRow
def list_all_table(request):
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('', '', sid='')
conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns)
c = conn.cursor()
c.execute("select table_name from all_tables")
c.rowfactory = makeDictFactory(c)
for rowDict in c:
context = {
'obj2':rowDict
}
#database_table = c.fetchall()
return render(request,'define_segment.html',context)
这是html代码
<div class="btn-group">
<select style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">
{% for table in obj2 %}
<option>{{ table.table_name }}</option>
{% endfor %}
</select>
</div>
如何将参数传递给HTML中的obj2,我感觉我的观点不对,需要帮助解决,谢谢
P.S : 我需要这个 views.py
来从这个代码中创建一个依赖下拉列表
所以我已经知道答案了,所以我必须先把它追加到列表中,因为当我不把它追加到列表中时,它会显示最后一行,为什么不显示?因为在 html 中我使用 table.table_name ,正确的方法是写 table 只是因为 table 已经拥有 obj2 中没有 columnName 的所有数据。所以 table 只会完成工作
这是我写的
VIEWS.PY
def makeDictFactory(cursor):
columnNames = [d[0] for d in cursor.description]
def createRow(*args):
return dict(zip(columnNames, args))
return createRow
def list_all_table(request):
import cx_Oracle
dsn_tns = cx_Oracle.makedsn('', '', sid='')
conn = cx_Oracle.connect(user=r'', password='', dsn=dsn_tns)
c = conn.cursor()
c.execute("select table_name from all_tables")
c.rowfactory = makeDictFactory(c)
databasetable = []
for rowDict in c:
databasetable.append(rowDict['TABLE_NAME'])
context = {
'obj2' :databasetable
}
return render(request,'define_segment.html',context)
html代码
<div class="btn-group">
<select style="width:425px;background-color:white;height:30px;font-color:red;text-align-last:center;">
{% for table in obj2 %}
<option>{{ table }}</option>
{% endfor %}
</select>
</div>
而且有效!