模板渲染
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
,完成响应输出后要执行的后台任务。