1

让它在我的本地机器上运行没有问题,但是当部署到 Heroku 时,flask-bootstrap 资产不会导入位于虚拟环境中的 base.html 文件。而且我在日志或控制台中找不到任何错误。

我还需要激活 Heroku 上的虚拟环境还是应该已经处理好?

这是我尝试导入 bootsrap 的 config.py 文件:

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
Bootstrap(app)
db = SQLAlchemy(app)

app.config['SQLALCHEMY_DATABASE_URI'] = 'URI-is-changed-on-this-question-for-privacy-reasons'

app.config['SECRET_KEY'] = 'secret-key-is-changed-on-this-website-for-privacy reasons' 

app.py 导入文件并激活服务器

from config import app
from flask import Flask
from models import authentication, posts
from views import authentication, posts
from forms import authentication, posts

if __name__ == '__main__':
    app.run()

这是尝试扩展 boostrap base.html 的 html 文件

{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block jumbotron %}
    <div class="jumbotron">
        <h2>Hunter Krieger</h2>
        <h3>Blogger, Web Developer, Gamer and Bibliophile
    </div>
{% endblock jumbotron %}

{% block content %}
    {% if post %}
        {% for display in post %}
            <article class="well">
                <h1><a href="/{{ display.slug }}">{{ display.title }}</a></h1>
                <h4>Written by {{ display.author }}</h4>
                <h4>{{ display.created_at.strftime('%b %d, %Y') }}</h4>
                <div class="body">
                    {{ display.body | truncate(1250) | safe }}
                </div>
            </article>
        {% endfor %}
    {% else %}
        <p>There are no posts</p>
    {% endif %}
{% endblock %}

这是位于虚拟环境中路径“./venv/Lib/site-packages/flask_bootstrap/templates/bootstrap/base.html”的base.html文件

{% block doc -%}
<!DOCTYPE html>
<html{% block html_attribs %}{% endblock html_attribs %}>
{%- block html %}
  <head>
    {%- block head %}
    <title>{% block title %}Welcome to hckrieger.com!{% endblock title %}</title>

    {%- block metas %}
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    {%- endblock metas %}

    {% block favicon %}
    <link rel="shortcut icon" href="{{ url_for('static', filename='favicon.ico') }}">
    {% endblock %}

    {%- block styles %}
    <!-- Bootstrap -->
    <link href="{{bootstrap_find_resource('css/bootstrap.css', cdn='bootstrap')}}" rel="stylesheet">
    <link href="{{ url_for('static', filename='css/stylesheet.css') }}" rel="stylesheet">
    {%- endblock styles %}

    {%- block fonts %}
    <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet"> 
    {%- endblock fonts %}

    {% block texteditor %}
        <script src="//cdn.ckeditor.com/4.7.1/full/ckeditor.js"></script>
    {%- endblock texteditor %}

    {%- endblock head %}
  </head>
  <body{% block body_attribs %}{% endblock body_attribs %}>
    {% block body -%}
    {% block navbar %}
    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
          <!--<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>-->
          <a class="navbar-brand" href="{{ url_for('index') }}">hckrieger.com</a>
        </div>

        <!-- Collect the nav links, forms, and other content for toggling 
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">      
          <ul class="nav navbar-nav navbar-right">
            <li><a href="{{ url_for('index') }}">Home</a></li>
            <li><a href="{{ url_for('about') }}">About</a></li>
            <li><a href="{{ url_for('contact') }}">Contact</a></li>
          </ul>
        </div>--><!-- /.navbar-collapse -->
      </div><!-- /.container-fluid -->
    </nav>
    {%- endblock navbar %}

    {% block jumbotron %}

    {% endblock jumbotron %}

    {% if admin %}
        <div class="container">
            <section class="content col-md-12">
                {% block admin_content -%}

                {%- endblock admin_content %}
            </section>  
        </div>
    {% else %}

        <div class="container">
            <section class="content col-md-9">
                {% block content -%}

                {%- endblock content %}
            </section>
            <section class="content col-md-3">
                {% include 'sidebar.html' %}
            </section>
        </div>

    {% endif %}

    {% block footer %} 
        <p class="center">hckrieger.com &copy; 2017</p>
    {% endblock %}

    {% block scripts %}
    <script src="{{bootstrap_find_resource('jquery.js', cdn='jquery')}}"></script>
    <script src="{{bootstrap_find_resource('js/bootstrap.js', cdn='bootstrap')}}"></script>
    {%- endblock scripts %}
    {%- endblock body %}
  </body>
{%- endblock html %}
</html>
{% endblock doc -%}

从看到该代码有人知道我可以改变什么来让flask-bootstrap在Heroku上工作吗?

4

1 回答 1

0

在您的第一个代码段中,Bootstrap(app)应该是bootstrap = Bootstrap(app)

from flask import Flask
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
bootstrap = Bootstrap(app)  # this line
db = SQLAlchemy(app)
于 2017-08-10T00:28:52.603 回答