简体   繁体   中英

Re-Ask: Whats wrong with the Flask-Bootstrap?

OK

So you didn't like my last question

Here is a SECOND question, with much more information than actually needed. It's a very simple problem defining the base dir inside the flask-bootstrap module. If you managed to see my last question , I showed my code, but here is some more of the USELESS information you wanted for some odd reason:

Index.html

{% extends 'bootstrap/base.html' %}
<!-- TEST THINGS ON A DIFFERENT REPL! -->


<!DOCTYPE html>
<html>
  <head>

    <!-- This is for the tab -->
    <title>Helliott-chip</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <link href="{{ url_for('static', filename='style.css') }}" rel="stylesheet" type="text/css" />

  </head>
  <body>
    <!-- Title on top -->
    <h1><center>Helliot-Chip</center></h1>
    <p>New User? <a href="{{ url_for('register') }}">Click to Register!</a></p>

    <!-- Grey Menu Select -->
    <div class="scrollmenu1">
      {% if current_user.is_anonymous %}
      <a href="{{ url_for('login') }}">Login</a>
      {% else %}
      <a href="{{ url_for('logout') }}">Logout</a>
      <a href="{{ url_for('user', username=current_user.username) }}">Profile</a>
      {% endif %}
      <a href="{{ url_for('news') }}">Home</a>
      <a href="{{ url_for('about') }}">About</a>
      <a href="{{ url_for('explore') }}">Explore</a>
      <a href="{{ url_for('videos') }}">Videos</a>
      <a href="{{ url_for('music') }}">Music</a>
    </div>

    {% block content %}
          <h1>Hi, {{ current_user.username }}!</h1>
    {% endblock %}

    {% block app_content %}{% endblock %}

    {% block scripts %}
        {{ super() }}
        {{ moment.include_moment() }}
    {% endblock %}
  </body>
</html>

init .py

import logging
from logging.handlers import SMTPHandler, RotatingFileHandler
import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_login import LoginManager
from config import Config
from flask_mail import Mail
from flask_bootstrap import Bootstrap
from flask_moment import Moment

app = Flask(__name__)
Bootstrap(app)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
login = LoginManager(app)
login.login_view = 'login'
mail = Mail(app)
moment = Moment(app)

from app import models, errors

So now that I have that down, my error (after I changed the index to base in the index.html):

[2021-04-13 17:18:39,365] INFO in debughelpers: Locating template "index.html":
    1: trying loader of application "app"
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /home/runner/Website30/app/templates
       -> found ('/home/runner/Website30/app/templates/index.html')
    2: trying loader of blueprint "bootstrap" (flask_bootstrap)
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /opt/virtualenvs/python3/lib/python3.8/site-packages/flask_bootstrap/templates
       -> no match
[2021-04-13 17:18:39,372] INFO in debughelpers: Locating template "bootstrap/base.html":
    1: trying loader of application "app"
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /home/runner/Website30/app/templates
       -> no match
    2: trying loader of blueprint "bootstrap" (flask_bootstrap)
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /opt/virtualenvs/python3/lib/python3.8/site-packages/flask_bootstrap/templates
       -> found ('/opt/virtualenvs/python3/lib/python3.8/site-packages/flask_bootstrap/templates/bootstrap/base.html')
172.18.0.1 - - [13/Apr/2021 17:18:39] "GET / HTTP/1.1" 200 -
[2021-04-13 17:18:40,173] INFO in debughelpers: Locating template "404.html":
    1: trying loader of application "app"
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /home/runner/Website30/app/templates
       -> found ('/home/runner/Website30/app/templates/404.html')
    2: trying loader of blueprint "bootstrap" (flask_bootstrap)
       class: jinja2.loaders.FileSystemLoader
       encoding: 'utf-8'
       followlinks: False
       searchpath:
         - /opt/virtualenvs/python3/lib/python3.8/site-packages/flask_bootstrap/templates
       -> no match

And my error before I changed it:

jinja2.exceptions.TemplateNotFound: bootstrap/index.html

Now this time without having my question being shut down from any answers in general (which I may note is opposing the purpose of this site) What would be wrong here? Is something wrong with the way I'm initializing flask-bootstrap, or is there some command I need to put in the terminal? Feel free to ask questions, and thanks a lot if it's a simple problem I'm missing. And I apologize for any unneeded attitude, I was just disappointed in the person who locked my last question for "not enough information".

There is an issue with the way you are initializing flask-bootstrap . This how you should go about it:

# Your previous imports
from flask_bootstrap import Bootstrap

app = Flask(__name__)

bootstrap = Bootstrap(app)

# ...

Basically, update the line:

Bootstrap(app)

to:

bootstrap = Bootstrap(app)

This is exactly what you have done for the other installed packages too.

Maintain the line {% extends 'bootstrap/base.html' %} in your base template (which is the parent template). Do not change it to {% extends 'bootstrap/index.html' %} This file inherits the styles, layout, features etc from bootstrap's base template.

<!-- base.html -->




{% extends 'bootstrap/base.html' %}

{% block head %}
    <!-- Head information goes here -->
{% endblock %}

{% block navbar %}
    <!-- Your navbar goes here -->
{% endblock %}

{% block content %}
<!-- flash message goes here -->

    {% block app_content %}
        <!-- Content from your custom HTML templates will go here -->
    {% endblock %}

{% endblock %}

{% block scripts %}
    <!-- Your scripts go here -->
{% endblock %}

In your index.html file which inherits your base,html , you will do:

<!-- index.html -->


{% extends 'base.html' %}

{% block app_content %}
    <!-- Content goes here -->
{% endblock %}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM