python - 将数据库添加到 Flask 应用程序后未显示索引页面
问题描述
创建数据库模型后,我正在创建一个应用程序。它没有给出任何错误,但是在添加了db.commit()
inindex
路由后,它没有显示索引页面,而是显示了其他页面而没有任何错误。我提供了错误图像的链接。我不明白我做错了什么。
app.py
->
from flask import Flask , render_template, request, jsonify
from flask_sqlalchemy import SQLAlchemy
import datetime as dt
from flask_marshmallow import Marshmallow
#app config
app=Flask(__name__)
app.config['SECRET_KEY']="ASGH}|#%*9"
app.config['SQLALCHEMY_DATABASE_URI']="sqlite:///site.db"
#db
db=SQLAlchemy(app)
ma=Marshmallow(app)
#model
class contact(db.Model):
id= db.Column(db.Integer, primary_key="True")
name= db.Column(db.String(30), nullable=False)
mobile= db.Column(db.Integer, unique=True, nullable=False)
email= db.Column(db.String(45), nullable=False)
company_name= db.Column(db.String(30), nullable=False)
subject= db.Column(db.String(45), nullable=False)
message= db.Column(db.Text, nullable=False)
date_posted= db.Column(db.DateTime, nullable=False, default=dt.datetime.now())
class ContactSchema(ma.Schema):
class Meta:
fields=("id","name","mobile","email","company_name","subject","message","date_posted")
cnt_schema= ContactSchema()
cnts_schema= ContactSchema(many=True)
#pages
@app.route("/", methods=['GET', 'POST'])
def index():
if request.method == "POST":
name= request.form.get("Name")
mobile= request.form.get("mobile")
email= request.form.get("email")
cmp_nm= request.form.get("c_name")
sub= request.form.get("subject")
msg= request.form.get("msg")
#storing into db
cnt= contact(name,mobile,email,cmp_nm,sub,msg)
db.session.add(cnt)
db.session.commit()
#alter box required
return render_template("index.html")
templates/index.html
->
{% extends "layout.html" %}
{% block title %} {% endblock %}
{% block body %}
<div class="container md:mx-auto">
<h3>Contact</h3>
<div class="row">
<form class="col s12" action="{{ url_for("app")}}" method="post">
<div class="row">
<div class="input-field col s6">
<i class="material-icons prefix">account_circle</i>
<input id="icon_prefix" name="Name" type="text" class="validate">
<label for="icon_prefix">Name</label>
</div>
<div class="input-field col s6">
<i class="material-icons prefix">phone</i>
<input id="icon_telephone" name="mobile" type="tel" class="validate">
<label for="icon_telephone">Telephone</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<i class="material-icons prefix">email</i>
<input id="icon_email" name="email" type="tel" class="validate">
<label for="icon_email">Email</label>
</div>
<div class="input-field col s6">
<i class="material-icons prefix">business</i>
<input id="icon_business" name="c_name" type="tel" class="validate">
<label for="icon_business">Company Name</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<i class="material-icons prefix">mode_edit</i>
<input id="icon_prefix2" name="subject" type="text" class="validate">
<label for="icon_prefix2">Subject</label>
</div>
<div class="input-field col s6">
<i class="material-icons prefix">keyboard</i>
<textarea id="textarea1" name="msg" class="materialize-textarea"></textarea>
<label for="icon_keyboard">Message</label>
</div>
</div>
<button class="btn waves-effect waves-light" type="submit" name="action">Submit
<i class="material-icons right">send</i>
</button>
</form>
</div>
</div>
{% endblock %}
我该如何解决?
解决方案
在templates/index.html
你犯了一个错误:
<form class="col s12" action="{{ url_for("app")}}" method="post">
应该 :
<form class="col s12" action="{{ url_for("index")}}" method="post">
推荐阅读
- c# - 无效值“armeabi”
- php - 试图使用一个特征,但一直说没有找到
- java - 进行 JSON 调用的 Android 应用程序从服务器获取意外数据,但相同的调用在浏览器中有效
- sql-server - 从 varchar(50) 列表中查找值包含单词的行
- c# - foreach(项目中的变量)和排除
- sharepoint-online - 如何在视图中设置列位置
- smartcard - 在 python 3.7 中安装 Pyscard
- apache-kafka - kafka 在 2 个节点宕机后没有选举新的领导者
- c# - 如何仅验证一个绑定属性
- python - 来自 sklearn 的高斯混合模型分类器的精度不稳定