2015-08-08 131 views
0

大家好!從Web2py的數據庫填充下拉導航菜單

這是可能的Web2py?

查看學生 元年(從數據庫填充)

  • A節(從數據庫填充)
  • B節等
  • C節

第二年(從數據庫填充)

  • A部分等
  • B節
  • C部分

現在

到代碼

myDB.py

db.define_table('stud_info', 
      Field('firstname'), 
      Field('lastname')) 

db.define_table('section', 
      Field('section_name', requires=IS_NOT_EMPTY())) 

db.define_table('yearstanding', 
      Field('year_level'), 
      Field('section', 'reference section')) 

菜單。 py

response.menu = [(T('Home'), False, URL('icthome', 'home'), []),] 

def _(): 
# shortcuts 
app = request.application 
ctr = request.controller 
# useful links to internal and external resources 

for row in db(db.year_standing).select(): 
    response.menu += [ 
     ((T('View Students'), False, '#', [ 
        ((T(row.year_level), False, '#', [ 
           (T(row.section), False, URL('',''), [])])) 
       ])) 
    ] 

,我得到了錯誤:

Traceback (most recent call last): <br><br> 
File "D:\Kuya Files\My Videos\Tutorial\Python\web2py_win\gluon\restricted.py", line 227, in restricted 
    exec ccode in environment <br><br> 
File "D:/Kuya Files/My Videos/Tutorial/Python/web2py_win/applications/ClearanceSystem/models/menu.py", line 168, in <module> 
    if DEVELOPMENT_MENU: _() <br><br> 
    File "D:/Kuya Files/My Videos/Tutorial/Python/web2py_win/applications/ClearanceSystem/models/menu.py", line 53, in _ 
    for row in db(db.year_standing).select():<br><br> 
    File "D:\Kuya Files\My Videos\Tutorial\Python\web2py_win\gluon\packages\dal\pydal\base.py", line 906, in __getattr__ 
    return super(DAL, self).__getattr__(key)<br><br> 
    File "D:\Kuya Files\My Videos\Tutorial\Python\web2py_win\gluon\packages\dal\pydal\helpers\classes.py", line 348, in __getattr__ 
    raise AttributeError<br><br> 
AttributeError 

回答

0

文件在/模型文件夾的頂層中定義的db.year_standing表之前按字母順序執行的,所以正在執行的menu.py文件myDB.py文件。只需更改文件名稱,以便在定義表格後創建菜單。

此外,它可能是一個好主意cache this query爲了避免在每個請求上擊中數據庫。

+0

美好的一天,我將myDB更改爲db1。我仍然有錯誤。基於我在web2py中的研究,子引導子功能並未在bootstrap 3中實現?這裏是鏈接[鏈接](http://comments.gmane.org/gmane.comp.python.web2py/140468),所以我決定菜單將是這樣的:第一年 - 第A,B,C,D部分第二年 - A,B,C等部分。年級和部分處於循環狀態。 Year級別是外部循環,Section是嵌套循環。我在我的教師web2py項目上看到,電影類別(數據庫中的表格)是導航菜單,他使用'db(db.category).select():'中的行。 – MeSH

+0

(續)那麼我怎樣才能做到這一點與子菜單的部分循環? – MeSH

+0

你是說你有*相同*錯誤,或者現在有不同的問題?如果是後者,那麼我相信上述問題就是你最初提出問題的答案,現在你應該開一個新問題(或者至少更新問題以反映你當前的代碼和問題)。 – Anthony