我希望使代码更易于维护。现在“thing1”重复三次。有没有办法做到这个
@app.route("/thing1")
def thing1():
return render_template("thing1.ejs")
@app.route("/thing2")
def thing2():
return render_template("thing2.ejs")
@app.route("/thing3")
def thing3():
return render_template("thing3.ejs")
更像是......
@app.route("/thing1")
def thing1():
return render_template_name_of_function() # should render thing1
@app.route("/thing2")
def thing2():
return render_template_name_of_function() # should render thing2
@app.route("/thing3")
def thing3():
return render_template_name_of_function() # should render thing3
答案 0 :(得分:2)
这就是 的完成方式。
@app.route("/thing1")
def thing1():
return render()
@app.route("/another_thing1")
def another_thing1():
return render()
@app.route("/yet_anther_thing1")
def yet_antoher_thing1():
return render()
def render():
return render_template("thing1.ejs")
虽然,除非你认为绝对必要,否则我认为应该使用redirect("thing1")
完成。
答案 1 :(得分:1)
您可以尝试使用inspect
模块读取函数信息,以获取当前函数名称:
import inspect
@app.route("/thing1")
def thing1():
return render_template(inspect.stack()[0][3])
@app.route("/thing2")
def thing2():
return render_template(inspect.stack()[0][3])
@app.route("/thing3")
def thing3():
return render_template(inspect.stack()[0][3])
然后,您可以在inspect.stack()
调用后指定模板文件的扩展名,例如inspect.stack()[0][3] + '.html'