我要求的其实很简单。我想创建一个包含一些字段和一个提交和一个取消按钮的表单。我想使用quick_formFlask-Bootstrap的模板功能来降低模板中的开销。我的表格是这样的:
from flask_wtf import FlaskForm
from wtforms.validators import Required, Length
class SequenceForm(FlaskForm):
name = StringField('Name:', validators=[Required(), Length(1, 128)])
# some other fields here
submit = SubmitField('submit')
cancel = SubmitField('cancel')
Run Code Online (Sandbox Code Playgroud)
模板:
{% extends 'base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block content %}
<div class="container">
<form method="POST">
<div class="row">
<div class="col-xs-12">
{{ wtf.quick_form(form, button_map={'submit': 'primary'}) }}
</div>
</div>
</form>
</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)
正如人们所怀疑的那样,我想在提交时验证并接受输入值,并在取消时跳过验证。所以我的视图函数看起来像预期的那样。
@main.route('sequence/', methods=['GET', 'POST'])
def sequence(): …Run Code Online (Sandbox Code Playgroud) 我正在开发我的第一个 python 程序/作业,我不仅对这门语言很陌生,而且这也是我第一次接触 Java、C# 和 .Net 等语言之外的语言,所以我很难选择起来吧。
我得到了一堆示例文件,应该运行它们来了解我需要做什么,但我收到错误:ModuleNotFoundError:没有名为“flask_bootstrap”的模块
我成功运行了 bin/activate,这是一些命令行:
(p3) C:\Users\ritol\OneDrive\School\Project Files\Project Files\Flask\2f>python Weather.py 回溯(最近一次调用):文件“weather.py”,第 2 行,来自 Flask_bootstrap 导入Bootstrap ModuleNotFoundError:没有名为“flask_bootstrap”的模块
(p3) C:\Users\ritol\OneDrive\School\Project Files\Project Files\Flask\2f>bin/activate 'bin' 不被识别为内部或外部命令、可操作程序或批处理文件。
这是我被要求执行的 pip 安装列表,它完成了:
Flask==1.1.1
Flask-Bootstrap==3.3.7.1
Flask-Login==0.4.1
flask-marshmallow==0.10.1
Flask-Migrate==2.5.2
Flask-RESTful==0.3.7
Flask-Script==2.0.6
Flask-SQLAlchemy==2.4.0
Flask-Testing==0.7.1
Flask-WTF==0.14.2
itsdangerous==1.1.0
Jinja2==2.10.1
Run Code Online (Sandbox Code Playgroud)
2f/天气.py:
from flask import Flask, render_template
from flask_bootstrap import Bootstrap
app = Flask(__name__)
bootstrap = Bootstrap(app)
@app.route('/')
def index():
Run Code Online (Sandbox Code Playgroud)
ETC...
我希望它能显示出像前面的示例一样的内容:
* Serving Flask app "FlaskApp" (lazy loading)
* Environment: production
WARNING: This is a development server. Do …Run Code Online (Sandbox Code Playgroud) 尝试使用flask-bootstrap quick_form。
HTML模板my-form.j2:
{% import "bootstrap/wtf.html" as wtf %}
{% extends "layout.j2" %}
{% block content %}
<h1>My form</h1>
{{ wtf.quick_form(form) }}
{% endblock content %}
Run Code Online (Sandbox Code Playgroud)
表格类别:
class MyForm(FlaskForm):
"""A WTForm for configuring vehicle information"""
field1 = StringField('First field', [wtforms.validators.required()])
field2 = StringField('Second field', [wtforms.validators.required()])
field3 = StringField('Third field', [wtforms.validators.required()])
Run Code Online (Sandbox Code Playgroud)
表单处理程序:
@app.route('/myform', methods=('GET', 'POST'))
def my_form():
form = MyForm()
if form.validate_on_submit():
myData = form.data
return redirect("/")
return render_template("my-form.j2", form=form)
Run Code Online (Sandbox Code Playgroud)
不幸的是,即使添加{{ form.submit }}到表中,我也看不到呈现“提交”按钮
。有任何想法吗?
我尽力尝试在计算机上使用 Flask 在本地使用 bootstrap(没有互联网连接)。我的文件夹是这样的:模板
-layout.html
-bootstrap
-css
-bootstrap.min.css
-js
-bootstrap.min.js
-jquery-3.2.1.slim.min.js
-popper.min.js
Run Code Online (Sandbox Code Playgroud)
在我的layout.html 文件中,我将 bootstrap 与以下几行一起使用:
<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1"
Run Code Online (Sandbox Code Playgroud)
在 head 标签中和
<script src="bootstrap/js/jquery-3.2.1.slim.min.js"></script>
<script src="bootstrap/js/popper.min.js"></script>
<script src="bootstrap/js/bootstrap.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
在正文标签中。如果我只启动这个 html 文件,则引导程序正在工作,但如果我在 app.py 文件中使用此模板,如下所示:
@app.route("/")
@app.route("/home/")
def home():
return render_template("layout.html")
Run Code Online (Sandbox Code Playgroud)
引导程序无法正常工作...提前感谢您的帮助。