模板渲染

Starlette没有固定指定一种模板引擎来渲染输出HTML内容,但是在日常使用中,Jinja2模板引擎是比较好的一个匹配选择。Starlette针对Jinja2提供了简便的配置方法。以下是一个使用模板渲染输出的示例。

from starlette.applications import Starlette
from starlette.staticfiles import StaticFiles
from starlette.templating import Jinja2Templates


templates = Jinja2Templates(directory="templates")

app = Starlette()
app.mount("/static", StaticFiles(directory="statics"), name="static")

@app.route("/")
async def homepage(request):
	return templates.TemplateResponse("index.html", { "request": request })

首先需要对Jinja2Templates类进行实例化,获取模板引擎。实例化时需要指定模板文件所在目录。Jinja2Templates类的实例可以用来渲染模板目录中的指定模板。渲染模板需要使用TemplateResponse()方法,这个方法可以接受以下参数,并直接产生响应输出。

  • name,模板文件名。
  • context,要传递给模板的上下文实例,一般采用字典类型。
  • status_code,输出响应的Status Code。
  • headers,设置输出响应的头信息。
  • media_type,设置输出的媒体类型信息。
  • background,完成响应输出后要执行的后台任务。