Python 为什么在使用Flask时标题会显示在页面正文中?
一切都很好,包括标题,直到我去添加一个图标。手动创建Python 为什么在使用Flask时标题会显示在页面正文中?,python,html,twitter-bootstrap,flask,Python,Html,Twitter Bootstrap,Flask,一切都很好,包括标题,直到我去添加一个图标。手动创建并调用{{super()}引入引导的黑魔法后,标题现在显示在导航栏上方 base.html {%extends“bootstrap/base.html”%} {%block head%} {{super()}} {%block title%}{%block page_name%}{%endblock%}-MyFlask{%endblock%} {%endblock%} {%block navbar%} {%endblock%} index.h
并调用{{super()}
引入引导的黑魔法后,标题现在显示在导航栏上方
base.html
{%extends“bootstrap/base.html”%}
{%block head%}
{{super()}}
{%block title%}{%block page_name%}{%endblock%}-MyFlask{%endblock%}
{%endblock%}
{%block navbar%}
{%endblock%}
index.html
{%extends“base.html”%}
{%block page_name%}索引{%endblock%}
我怀疑这并不能直接回答您的问题,但实现这一结果的更好方法可能是从视图中传入页面标题
base.html
{% block title %}
{% if title %}
{{title}} - MyFlask
{% else %}
MyFlask
{% endif %}
{% endblock %}
views.py
@app.route('/', methods=['GET'])
def index():
return render_template("index.html", title='Index')
在块中使用
super()
函数时,将向该块添加新内容,而不是替换原始内容。因此,当您在head
块中调用super()
时,Jinja2从bootstrap/base.html
插入head
块的内容:
<head>
{%- block head %}
<title>{% block title %}{% endblock title %}</title>
{%- block metas %}
<meta name="viewport" content="width=device-width, initial-scale=1.0">
{%- endblock metas %}
{%- block styles %}
<!-- Bootstrap -->
<link href="{{bootstrap_find_resource('css/bootstrap.css', cdn='bootstrap')}}" rel="stylesheet">
{%- endblock styles %}
{%- endblock head %}
</head>
您可以包括“bootstrap/base.html”文件吗?bootstrap/base.html文件是bootstrap附带的标准文件。据我所知,我认为它只是包含了所有的设置和初始化,以便合并引导。这实际上可能是它继承的文件(也称为bootstrap/base.html),至少是非常类似的文件。
{% extends "bootstrap/base.html" %}
{% block title %}{% block page_name %}{% endblock %} - MyFlask{% endblock %}
{%- block styles %}
{{ super() }}
<link rel="icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
<link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}" type="image/x-icon">
{% endblock %}
{% block navbar %}
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">MyFlask</a>
</div>
</div>
</nav>
{% endblock %}