用python编写的html文件无法执行

我尝试着去借助SQLAlchemy数据库去实现一个简易的Web用户登录界面,但是在设置好各种环境参数,编写好代码后运行却一直在网页上不可运行,查看之后发现是render_template找不到要渲染的html文件,有人能帮忙解决一下问题吗?


import os                                                                       #导入各种所需要的包
from flask_sqlalchemy import SQLAlchemy
from flask import Flask,render_template,session,redirect,url_for
from flask_bootstrap import Bootstrap
from flask_wtf import FlaskForm
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired

app=Flask(__name__)                                                              #创建应用实例
bootstrap=Bootstrap(app)
app.config['SECRET_KEY']='hard to guess string'                                  #为网页文件设置CSRF保护机制


basedir=os.path.abspath(os.path.dirname(__file__))                               #为数据指定查询目录
app.config['SQLALCHEMY_DATABASE_URI']='sqlite:///'+os.path.join(basedir,'user_data.sqlite')
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True                                 #设置按键检验
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False                               #将数据库设定为不可修改类型

db=SQLAlchemy(app)                                                               #基于上述代码的属性创建一个数据库实例


#定义User模型
class User(db.Model):
    __tablename__='user'                                                         #类变量tablename用于定义数据库的表名
    id=db.Column(db.Integer,primary_key=True)
    username=db.Column(db.String(64),unique=True,index=True)                     #设定unique函数的目的是使得用户名防止重复
    password=db.Column(db.String(64))


    def __init__(self,username,password):
        self.username=username
        self.password=password

    def __repr__(self):
        return f'<User:{self.username},{self.password}>'


#创建表单
class MyForm(FlaskForm):
    name=StringField('用户名:',validators=[DataRequired()])                       #文本字段
    psw=PasswordField('密码:',validators=[DataRequired()])                       #密码字段,函数DataRequired()起到收集数据作用
    submit=SubmitField('提交')                                                    #表单提交按钮

#编写路由函数
@app.route('/',methods=['GET','POST'])
def index():
    all_users=User.query.all()                                                   #调用User类内的query实例去指定返回格式为列表
    form=MyForm()                                                                #调用Myform类
    if form.validate_on_submit():                                                #判断是否点击提交按钮
        user=User.query.filter_by(username=form.name.data).first()
        if user is None:                                                         #若user内为空
            user=User(username=form.name.data,password=form.psw.data)            #基于Myform类调用属性
            db.session.add(user)
            db.session.commit()
            session['known']=False

        else:
            session['known']=True
        session['name'],session['psw']=form.name.data,form.psw.data
        form.name.data,form.psw.data='',''

        return redirect(url_for('index'))                                        #向文本文件传递路由和URL
    return render_template('sql_index.html', form=form, name=session.get('name'), psw=session.get('psw'),
                           known=session.get('known', False), all_users=all_users)#使用render_template经行渲染


#主函数部分
if __name__=='__main__':
    app.run(debug=False)
{% extends "bootstrap/base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}用户登录界面{% endblock %}
{% block content %}
<div class="container">
<h1>{% if not (name and psw) %}
    请输入用户名和密码!批评!!!
    {% elif not known %}
        欢迎{{name}}!您的密码为:{{psw}}
    {% else %}
        欢迎{{name}},很高兴再次见到你!表扬!
    {% endif %}
</h1>
</div>
{{wtf.quick_form(form)}}
<hr/>
<div class="container">
<h2>数据表信息:<br/>
{% for user in all_users %}
    {{user}}<br/>
{% endfor %}
</h2>
</div>
<% endblock %}





img

img

你的模版文件应该放在py的同一目录