繁体   English   中英

未找到 Jinja2 模板

[英]Jinja2 template not found

我正在使用带有Fastapi和 python 的jinja2模板来开发 web 服务器。 因此,当 web 浏览器执行获取请求时,我将要返回一个名为index.html的 HTML 页面。 但是我看到这个错误说 raise

TemplateNotFound(template) 
Jinja2.exceptions.TemplateNotFound: index.html 

看看下面的代码:

from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates  
  
app = FastAPI()
templates = Jinja2Templates(directory="templates")
    
    
@app.get('/')
    def root(request: Request):
       return templates.TemplateResponse("index.html", {"request": request})

@app.get(‘/home’)
     def home(request:Request, firstname: Optional[Str] = None, lastname: Optional[Str] = None): 
     # process first name last name here 
      processName(firstname,lastname )
    
       return  templates.TemplateResponse("index.html", {"request": request})

def processName(firstname, lastname):
      return “hi “ + firstname + “ “ + lastname

 

HTML 页面显示内部服务器错误。 显示的是 URL

http://localhost:8000/home?firstname=May&lastname=June

我认为您只需要 3 个空格,一切都会正常工作。

下面的代码中有 3 个锐器,用空格替换它们,你应该会喜欢的。 :D

@app.get(‘/home’)
 def home(request:Request, firstname: Optional[Str] = None, lastname: Optional[Str] = None): 
 # process first name last name here
 
 ###return  templates.TemplateResponse("index.html", {"request": request})

对于 fastapi & jinja2 模板,您应该使用绝对路径,例如:

主文件

from pathfile import Path

# some of codes here....

BASE_PATH = Path(__file__).parent.resolve()
# lets say your template directory is under the root directory
templates = Jinja2Templates(directory=f'{BASE_PATH}/templates')

@app.get('/', response_class=HTMLResponse)
async def homepage(request: Request):
    return templates.TemplateResponse('index.html', {'request': request})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM