我有一个使用flask和MySQL数据库以及SQLAlchemy构建的工作web应用程序
作为进一步开发的一部分,我在数据库中创建了一个名为“buggies”的新表。 数据库中以前的表(如post)是在web变成包之前设置的,我仍然可以向该表添加和删除post
但是,名为“buggies”的新表似乎没有在主页home.html上显示表内容
错误日志(摘录):
Error running WSGI application
2020-04-17 08:29:28,946: jinja2.exceptions.TemplateSyntaxError: expected token 'end of print statement', got ':'
2020-04-17 08:29:28,946: File "/usr/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
2020-04-17 08:29:28,946: return self.wsgi_app(environ, start_response)
我似乎也无法通过bash中的SQLAlchemy、python3连接到数据库:
>>> from flask_app import db
>>> Post.query.all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Post' is not defined
>>> from flask_app.models import db
>>> Post.query.all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Post' is not defined
>>> from flask_app import db
>>> Buggies.query.all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Buggies' is not defined
>>> from flask_app.models import db
>>> Buggies.query.all()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Buggies' is not defined
>>>
MySQL:
mysql> show tables;
+----------------------+
| Tables_in_olbliss$CF |
+----------------------+
| buggies |
| post |
| user |
+----------------------+
3 rows in set (0.01 sec)
mysql> describe buggies;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| BName | varchar(100) | NO | | NULL | |
| BRider | varchar(100) | YES | | NULL | |
| lastmodified | datetime | YES | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
mysql> select * from buggies;
+----+------------------+--------+---------------------+
| id | BName | BRider | lastmodified |
+----+------------------+--------+---------------------+
| 1 | Kawasaki | Bob | 2020-04-17 07:53:29 |
| 2 | Stewarding Buggy | | 2020-04-17 07:55:50 |
| 3 | Parking Buggy | | 2020-04-17 07:56:10 |
+----+------------------+--------+---------------------+
3 rows in set (0.01 sec)
mysql>
init.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_bcrypt import Bcrypt
from flask_login import LoginManager
app = Flask(__name__)
app.config["DEBUG"] = True
app.config['SECRET_KEY'] = '...'
SQLALCHEMY_DATABASE_URI = "mysql+mysqlconnector://{username}:{password}@{hostname}/{databasename}".format(
username="xxxxx",
password="xxxxx",
hostname="xxxxx",
databasename="xxxxx",
)
app.config["SQLALCHEMY_DATABASE_URI"] = SQLALCHEMY_DATABASE_URI
app.config["SQLALCHEMY_POOL_RECYCLE"] = 299
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)
bcrypt = Bcrypt(app)
login_manager = LoginManager(app)
login_manager.login_view = 'login'
login_manager.login_message_category = 'info'
from flask_app import routes
routes.py
@app.route('/')
@app.route('/h')
@app.route('/home')
def home():
posts = Post.query.all()
buggies = Buggies.query.all()
return render_template('home.html', posts=posts, buggies=buggies)
home.html(layout.html中没有任何会导致问题的内容)
{% extends "layout.html" %}
{% block content %}
<p>{% for buggy in buggies %}
{{ buggy:BName }}
{% endfor %}</p>
{% endblock content %}
models.py
class Buggies(db.Model):
id = db.Column(db.Integer, primary_key=True)
BName = db.Column(db.String(100), nullable=False)
BRider = db.Column(db.String(100), nullable=True)
lastmodified = db.Column(db.DateTime, nullable=True, default=datetime.utcnow)
def __repr__(self):
return f"Buggies('{self.BName}', '{self.BRider}','{self.lastmodified}')"
class Post(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(100), nullable=False)
date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
description = db.Column(db.Text, nullable=False)
status = db.Column(db.String(100), nullable=False)
assigned_to = db.Column(db.String(100), nullable=False)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
def __repr__(self):
return f"Post('{self.title}', '{self.date_posted}')"
forms.py
class BuggyForm(FlaskForm):
BName = StringField('Name of Buggy', validators=[DataRequired()])
BRider = StringField('Name of Rider')
lastmodified = DateTimeField('Date and Time', format='%Y-%m-%d %H:%M:%S')
submit = SubmitField('Save')
要检查列表,请使用此代码
还可以尝试将html更改为:
相关问题 更多 >
编程相关推荐