fastapi在jinja2引用css的时候变成http://127.0.0.1:80/static/style.css
时间: 2023-10-04 10:12:04 浏览: 42
这是因为FastAPI默认会将静态文件(如CSS、JavaScript等)放在`/static`目录下,并且会在本地的80端口上提供这些静态文件。因此,在Jinja2模板中引用CSS文件时,需要使用相对路径而非绝对路径。
例如,如果你的CSS文件名为`style.css`,则可以在Jinja2模板中使用以下代码引用它:
```html
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
```
这将会生成一个相对路径,指向FastAPI的静态文件服务器,而不是直接使用`http://127.0.0.1:80/static/style.css`这样的绝对路径。
相关问题
jinja2中<link rel="stylesheet" href="http://127.0.0.1:80/static/style.css">出现127.0.0.1
在Jinja2模板中,127.0.0.1是本地主机地址,它通常用于开发环境中。如果你想在生产环境中使用该模板,则应该将127.0.0.1替换为你的服务器域名或IP地址。
例如,如果你的服务器地址是example.com,则应该将链接标记更改为:
```
<link rel="stylesheet" href="http://example.com/static/style.css">
```
或者,如果你的服务器IP地址是192.168.1.100,则应该将链接标记更改为:
```
<link rel="stylesheet" href="http://192.168.1.100/static/style.css">
```
这样可以确保在生产环境中正确加载CSS文件。
fastapi在jinja2使用css
可以使用FastAPI和Jinja2一起创建具有CSS的网站。以下是一些步骤:
1. 首先,确保您已将所需的CSS文件放在正确的位置。例如,您可以将CSS文件放在“static/css”目录中。
2. 在FastAPI应用程序中,使用以下代码来设置Jinja2模板:
```python
from fastapi import FastAPI, Request
from fastapi.responses import HTMLResponse
from fastapi.templating import Jinja2Templates
app = FastAPI()
templates = Jinja2Templates(directory="templates")
```
3. 创建一个Jinja2模板,并在其中引用CSS文件。例如,您可以创建一个名为“index.html”的文件,并在其中引用CSS文件:
```html
<!DOCTYPE html>
<html>
<head>
<title>FastAPI + Jinja2</title>
<link rel="stylesheet" href="{{ url_for('static', path='/css/style.css') }}">
</head>
<body>
<h1>FastAPI + Jinja2</h1>
<p>Hello, {{ name }}!</p>
</body>
</html>
```
4. 在FastAPI应用程序中,创建一个路由方法来呈现Jinja2模板。例如:
```python
@app.get("/", response_class=HTMLResponse)
async def read_item(request: Request):
return templates.TemplateResponse("index.html", {"request": request, "name": "John Doe"})
```
在此示例中,我们使用了“TemplateResponse”类来呈现Jinja2模板。我们还将“request”和“name”作为参数传递给模板。
5. 最后,在FastAPI应用程序中,使用以下代码来指定包含CSS文件的目录:
```python
app.mount("/static", StaticFiles(directory="static"), name="static")
```
在此示例中,我们使用“StaticFiles”类来指定包含CSS文件的目录。我们还将此目录挂载到FastAPI应用程序的“/static”路径上。
这样,您就可以在FastAPI应用程序中使用Jinja2模板和CSS文件来创建具有样式的网站了。