2017-09-12 13 views
-1

データベースのテーブル名に基づいてナビゲーションバーを作成している時点でダッシュボードを作成しています(この部分はすべて問題ありません)。 views.pyでFlask HTMLモジュールへのアクセスViews.py関数の属性

は私がしている(編集:はviews.pyの残りの部分を追加した):

from flask import render_template 
from app import app 

import sqlite3, json 

@app.route('/') 
@app.route('/index') 
def index(): 
    return render_template('index.html',title='Homepage',) 
def nav_bar(): 
    connection = sqlite3.connect('C:\\SQLite\\Databases\\testPython.db') 
    cursor = connection.cursor() 

    cursor.execute('SELECT NAME FROM sqlite_master WHERE TYPE = \'table\';') 
     #ORDER BY NAME ASC 
     #tableNames = cursor.fetchall() 

    connection.close() 

    tableNames = json.dumps(cursor.fetchall()).replace("\"], [\"", " ").replace("[[\"","").replace("\"]]","").replace("access_","").split() 

    return tableNames 

私はコードがあるnavigation.htmlのナビゲーション作成しました -

を編集
{% for names in navBar.tableNames %} 
    <h1>Test</h1> 
{% endfor %} 

:ここはbase.html

<html> 
    <head> 
     <title>{{ title }} - Dashboard</title> 
    </head> 
    <body style="margin: 0; padding: 0;"> 
     <div style="height:7%; background-color: #171819;"><a href="/" style="color: white; vertical-align: middle; text-decoration: none; font-family: Sans-serif; font-size: 20px; position: relative; transform: translateY(-50%); top: 35%; padding-left: 5%">Access Log Dashboard >>></a></div> 
     <div class="container"> 
      <div class="column-left" style="float: left; width: 15%; background-color: #3c3f42; height: 93%"> 
      {% include 'navigation.html' %} 
      </div> 
      <div class="column-centre" style="display: inline-block; width: 80%; color: #3c3f42;"> 
      {% block content %} 
      {% endblock %} 
      </div> 
     </div> 
    </body> 
</html> 
です

navigation.htmlからviews.pyの属性にアクセスするにはどうすればよいですか?申し訳ありませんが、これがnewbyの質問であれば、私はそれを仮定します!

from flask import render_template 
from app import app 

import sqlite3, json 

@app.route('/') 
@app.route('/index') 
def index(): 
    table_names = nav_bar() 
    return render_template('base.html',title='Homepage',table_names = table_name) 
def nav_bar(): 
    connection = sqlite3.connect('C:\\SQLite\\Databases\\testPython.db') 
    cursor = connection.cursor() 

    cursor.execute('SELECT NAME FROM sqlite_master WHERE TYPE = \'table\';') 
     #ORDER BY NAME ASC 
     #tableNames = cursor.fetchall() 

    connection.close() 

    table_names = json.dumps(cursor.fetchall()).replace("\"], [\"", " ").replace("[[\"","").replace("\"]]","").replace("access_","").split() 

    return table_names 

してから、このようなあなたのテンプレートにそれを呼び出す:あなたは、テーブル名を渡す必要がある最初の

+0

あなたを送ることができますviews.pyの質問を追加してください。 –

+0

@EspoirMurhabaziは、あなたが求めているのであれば、views.pyの追加ビットを追加しましたか? – askand

答えて

0

は、あなたのこのようなテンプレートをレンダリングするためにnav_bar関数から返さ

{% for names in table_names %} 
    <h1>names</h1> 
{% endfor %} 
+0

テンプレートではなくモジュールとしてもいいですか?基本的にnavigation.htmlをindex.htmlに引っ張りたいので、各ページにこれを置くことができますが、base.htmlに載せておきたいと思います。痛いのは申し訳ありません! – askand

+0

具体的に言いたいことを教えてください。 upvote答えがあなたを助けるならば、私はそれを編集します –

+0

私の質問を編集してbase.hmlを追加します。しかし、私は、navigation.htmlをincludeするためにbase.htmlを持っており、基本的にそれをテンプレートではなくモジュールとして持っていたいと思っています。 モジュールから、nav_bar()関数にアクセスしてtable_names変数を取得することができます。モジュールではのリストを作成します(私はこれをまだ追加していませんが、私が将来行うことです)、それはbase.htmlの各ページにあります。 – askand

関連する問題