fastapi在jinja2引用css的时候变成http://127.0.0.1:80/static/style.css
时间: 2023-10-04 22:12:04 浏览: 200
这是因为在 FastAPI 中静态文件默认是在 `/static` 目录下,而 Jinja2 模板引擎中的 CSS 文件路径是相对于当前页面的 URL 而言的。因此,如果你在模板中写的是 `href="style.css"`,它会自动在当前页面的 URL 前面加上 `http://127.0.0.1:80/`,导致找不到文件。
为了解决这个问题,你可以在模板中使用 `url_for` 函数来生成正确的 CSS URL。例如,在你的模板中这样写:
```html
<link rel="stylesheet" href="{{ url_for('static', path='style.css') }}">
```
这样,Jinja2 就会自动根据 `static` 目录的位置来生成正确的 CSS URL,而不会再加上 `http://127.0.0.1:80` 的前缀了。
相关问题
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文件。
127.0.0.1 - - [14/May/2023 00:58:30] "GET / HTTP/1.1" 200 - 127.0.0.1 - - [14/May/2023 00:58:30] "GET /static/sweetalert/dist/sweetalert.css HTTP/1.1" 404 - 127.0.0.1 - - [14/May/2023 00:58:30] "GET /static/sweetalert/dist/sweetalert.min.js HTTP/1.1" 404 - [2023-05-14 00:58:32,535] ERROR in app: Exception on /login [GET] Traceback (most recent call last): File "F:\python\lib\site-packages\flask\app.py", line 2311, in wsgi_app response = self.full_dispatch_request() File "F:\python\lib\site-packages\flask\app.py", line 1834, in full_dispatch_request rv = self.handle_user_exception(e) File "F:\python\lib\site-packages\flask\app.py", line 1737, in handle_user_exception reraise(exc_type, exc_value, tb) File "F:\python\lib\site-packages\flask\_compat.py", line 36, in reraise raise value File "F:\python\lib\site-packages\flask\app.py", line 1832, in full_dispatch_request rv = self.dispatch_request() File "F:\python\lib\site-packages\flask\app.py", line 1818, in dispatch_request return self.view_functions[rule.endpoint](**req.view_args) File "G:\python\course_select_system-master\app\view.py", line 50, in login return render_template('login.html') File "F:\python\lib\site-packages\flask\templating.py", line 135, in render_template context, ctx.app) File "F:\python\lib\site-packages\flask\templating.py", line 117, in _render rv = template.render(context) File "F:\python\lib\site-packages\jinja2\asyncsupport.py", line 76, in render return original_render(self, *args, **kwargs) File "F:\python\lib\site-packages\jinja2\environment.py", line 1008, in render return self.environment.handle_exception(exc_info, True) File "F:\python\lib\site-packages\jinja2\environment.py", line 780, in handle_exception reraise(exc_type, exc_value, tb) File "F:\python\lib\site-packages\jinja2\_compat.py", line 37, in reraise raise value.with_traceback(tb) File "G:\python\course_select_system-master\app\templates\login.html", line 1, in top-level template code {% extends 'bootstrap/base.html' %} File "F:\python\lib\site-packages\flask_bootstrap\templates\bootstrap\base.html", line 1, in top-level template code {% block doc -%} File "F:\python\lib\site-packages\flask_bootstrap\templates\bootstrap\base.html", line 4, in block "doc" {%- block html %} File "F:\python\lib\site-packages\flask_bootstrap\templates\bootstrap\base.html", line 20, in block "html" {% block body -%} File "F:\python\lib\site-packages\flask_bootstrap\templates\bootstrap\base.html", line 26, in block "body" {% block scripts %} File "F:\python\lib\site-packages\flask_bootstrap\templates\bootstrap\base.html", line 27, in block "scripts" <script src="{{bootstrap_find_resource('jquery.js', cdn='jquery')}}"></script> jinja2.exceptions.UndefinedError: 'bootstrap_find_resource' is undefined 127.0.0.1 - - [14/May/2023 00:58:32] "GET /login HTTP/1.1" 500 -
这看起来是一个 Flask 应用程序的错误日志。从日志中可以看出,应用程序在处理 GET 请求时遇到了错误。具体来说,访问的静态文件没有找到,而且在渲染 login.html 模板时出现了一个未定义的变量 bootstrap_find_resource。这可能是因为在模板中使用了 Flask-Bootstrap 扩展,但是它没有正确安装或配置。你可以检查一下 Flask-Bootstrap 的安装和配置是否正确,或者尝试更换其他的静态文件库。
阅读全文