【问题标题】:Flask is rendering the head of my html document twiceFlask 两次渲染我的 html 文档的头部
【发布时间】:2016-08-21 07:45:20
【问题描述】:

我在尝试让 Flask(连同 Flask-Bootstrap)只为我的 HTML 文档生成一个 head 元素时遇到了麻烦。我现在遇到的问题是 head 元素是正确的,但是 Flask 也将它放到了 body 的开头。

/personal_website/app/templates/index.html:

{% extends "bootstrap/base.html" %}
#! I have not changed bootstrap/base.html

{% block head %}
  {{super()}}
  {% block title %}My_Name | Home{% endblock title %}
  {% block styles %}
    {{super()}}
    <link href="{{url_for('static',filename='stylesheets/style.css')}}"
          rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto"
          rel="stylesheet">
  {% endblock styles %}
{% endblock head %}

控制台输出:

  <head>

    <title>My_Name | Home</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <!-- Bootstrap -->
    <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="/static/stylesheets/style.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">

  </head>
  <body>
    My_Name | Home


    <!-- Bootstrap -->
    <link href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link href="/static/stylesheets/style.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">

【问题讨论】:

    标签: html flask jinja2 flask-bootstrap


    【解决方案1】:

    实际上,我可以通过从块头中取出标题中的内容(例如:标题和样式)来纠正这个问题。

    /personal_website/app/templates/index.html:

    {% extends "bootstrap/base.html" %}
    
    {% block title %}My_Name | Home{% endblock %}
    
    {% block styles %}
      {{super()}}
      <link href="{{url_for('static',filename='stylesheets/style.css')}}"
            rel="stylesheet">
    {% endblock styles %}
    
    {% block head %}
      {{ super() }}
    {% endblock %}
    

    这仍然允许我从 bootstrap/base.html 继承头部的内容

    【讨论】:

      【解决方案2】:

      我认为您只需要删除此行(可能两次):

      {{super()}}
      

      【讨论】:

      • 自己试过了,不是很好,去掉这部分代码会覆盖base.html中定义的内容
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      相关资源
      最近更新 更多