我创建了一个连接到数据库的函数,该数据库打印出无法连接到db'如果没有建立连接,则显示消息:
def connectToDB():
connectionString = 'dbname=reportingdb1 user=red_gui password=RadnfgoInd host=10.100.51.42'
try:
return psycopg2.connect(connectionString)
except:
print ("Failure to connect to db")
在索引部分的views.py文件中,立即调用此函数,在我的测试环境中,当我故意使用db的错误凭据(用于测试目的)时,将except failure语句打印到我的终端中。
####Index Page
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
connectToDB()
form = StaffNames()
if form.validate_on_submit():
return redirect('/results')
return render_template('index.html',title='Search Page',form=form)
我的问题是,我希望在网页上打印出此消息。我尝试过使用return
代替print
,而且还没有成功。我还尝试将except消息存储在变量中,然后在我的templates / index.html文件中,通过jinja2花括号调用它。对于我尝试的示例:
在views.py
except:
noconnect = "Failure to connect to db"
然后在我的index.html:
{{ noconnect }}
但这也没有奏效。这样做的最佳做法是什么? 感谢
答案 0 :(得分:1)
简化connectToDB
,以便它只连接到数据库,而不是其他任何内容。
def connectToDB():
connectionString = 'dbname=reportingdb1 user=red_gui password=RadnfgoInd host=10.100.51.42'
psycopg2.connect(connectionString)
处理视图中的任何潜在异常(但请注意,捕获所有异常不是一个好习惯)。
####Index Page
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
exception = None
try:
connectToDB()
except:
exception = 'Failure to connect to db'
form = StaffNames()
if not exception:
if form.validate_on_submit():
return redirect('/results')
return render_template('index.html',title='Search Page', form=form, exception=exception)
将{{ exception }}
放在index.html
答案 1 :(得分:0)
Web框架通常要求通过上下文将对象传递给视图和模板。您必须传递render_template
中的对象:
. . .
error = connectToDB()
return render_template('index.html', title='Search Page',
form=form, error=error)
然后在您的模板中,使用:{{ error }}
另一种更像Django的方法是为您的数据创建一个字典:
error = 'error message'
test = 'test'
. . .
data = {
'error': error,
'test': test
}
然后像这样返回render_template
:
return render_template('index.html', title='Search Page',
form=form, **data)
双星使你仍然可以这样做:{{ error }}
。否则,您必须执行此操作:{{ data.error }}