会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132647个问题

老师,我的代码报这个错误,我直接跑老师提供的代码也是报同样错误。然后我尝试根据这个网址上的博客解决(解决flask报错:RuntimeError: Working outside of application context._bianlidou的博客-CSDN博客),但是在globals.py这个文档里找不到相应函数。

"""  
数据库连接
    数据库初始化不再是通过create_engine。
    跟sqlalchemy一样,定义好数据库连接字符串DB_URI。
    将这个定义好的数据库连接字符串DB_URI,通过SQLALCHEMY_DATABASE_URI这个key名配置到app.config中。
    app.config["SQLALCHEMY_DATABASE_URI"] = DB_URI
    使用flask_sqlalchemy.SQLAlchemy这个类定义一个对象,并将app传入进去。
    db = SQLAlchemy(app)
创建ORM模型类
    使用db.Model来作为基类
    在模型类中,Column、String、Integer以及relationship等,都不需要导入了,直接使用db下面相应的属性名就可以了
    在定义模型的时候,可以不写__tablename__,那么flask_sqlalchemy会默认使用当前的模型的名字转换成小写来作为表的名字
将ORM模型映射到数据库表
    1. 删除数据库表:db.drop_all()
    2. 创建数据库表:db.create_all()
session的使用
    直接使用db.session
查询数据
    单表查询:不再是之前的session.query方法了,而是将query属性放在了db.Model上
    多表查询:如果查找数据涉及多个模型,只能使用db.session.query(模型名).all() 这种方式
"""

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

from flask import current_app


app = Flask(__name__)

# 数据库的变量
HOST = 'localhost'
PORT = 3306
DATA_BASE = 'flask_db'
USER = 'root'
PWD = '123456'
# 定义好数据库连接字符串DB_URI
DB_URI = f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'
# 将这个定义好的数据库连接字符串DB_URI,通过SQLALCHEMY_DATABASE_URI这个key名配置到app.config中。
app.config['SQLALCHEMY_DATABASE_URI'] = DB_URI
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 链接数据库  将app传入类对象
db = SQLAlchemy(app)

# 创建模型类
class User(db.Model):
    __tablename__ = 't_user'
    id = db.Column(db.Integer,primary_key = True,autoincrement = True)
    name = db.Column(db.String(32))

    def __repr__(self):
        return f'<User id={self.id} name={self.name}>'
   

class News(db.Model):
    __tablename__ = 't_news'
    id = db.Column(db.Integer,primary_key = True,autoincrement = True)
    content = db.Column(db.String(100))
    uid = db.Column(db.Integer,db.ForeignKey('t_user.id'))

    user = db.relationship('User',backref = 'newss')

    def __repr__(self):
        return f'<News id={self.id}  content={self.content}>'


 # 删除表
db.drop_all()
# 创建表
db.create_all()

# 增加数据
def create_data():
    user = User(name = '百战')
    news = News(content = 'Python内容')
    user.newss.append(news)
    db.session.add(user)
    db.session.commit()


# 查询单表数据
def query_data_one():
    users = User.query.all()
    print(users)


# 查询多表数据
def query_data_many():
    rs = db.session.query(User,News.content).join(News,News.uid == User.id).all()
    print(rs)


# 修改数据
def update_data():
    user = User.query.first()
    user.name = '百战程序员'
    db.session.commit()


# 删除数据
def delete_data():
    news = News.query.first()
    db.session.delete(news)
    db.session.commit()


if __name__ == '__main__':
    create_data()
    # query_data_one()
    # query_data_many()
    # update_data()
    # delete_data()
    # pass

image.png



Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 256楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 257楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 260楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 262楼

blueprint.zip

老师可以看看问题吗

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 263楼

TypeError

TypeError: one of the hex, bytes, bytes_le, fields, or int arguments must be given

Traceback (most recent call last)

  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 2548, in __call__

    return self.wsgi_app(environ, start_response)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 2528, in wsgi_app

    response = self.handle_exception(e)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 2525, in wsgi_app

    response = self.full_dispatch_request()
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 1822, in full_dispatch_request

    rv = self.handle_user_exception(e)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 1820, in full_dispatch_request

    rv = self.dispatch_request()
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/flask/app.py", line 1796, in dispatch_request

    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  • File "/Users/xulei/Downloads/Flask_code/Flask高级/24_wtf常用的验证器.py", line 22, in register

    if form.validate():
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/wtforms/form.py", line 329, in validate

    return super().validate(extra)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/wtforms/form.py", line 146, in validate

    if not field.validate(self, extra):
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/wtforms/fields/core.py", line 242, in validate

    stop_validation = self._run_validation_chain(form, chain)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/wtforms/fields/core.py", line 262, in _run_validation_chain

    validator(form, self)
  • File "/Users/xulei/python_env/flask_env/lib/python3.8/site-packages/wtforms/validators.py", line 555, in __call__

    uuid.UUID(field.data)
  • File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/uuid.py", line 163, in __init__

    raise TypeError('one of the hex, bytes, bytes_le, fields, '
TypeError: one of the hex, bytes, bytes_le, fields, or int arguments must be given遇到这种报错 是什么意思

Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 264楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask高级 265楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图基础和URL 266楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask之Jinja2模版 267楼
Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask数据库 269楼

SharedScreenshot1.jpg

SharedScreenshot.jpg

老师,麻烦看看我的代码,我的代码到网页运行以后输入用户名和密码然后登录,会跳到初始状态,不显示登录成功,输入错误也会跳到初始状态。下面是源代码:

from flask import Flask,request,render_template
from flask.views import MethodView

app = Flask(__name__)

# @app.route('/login/',methods=['GET','POST'])
# def login():
#     if request.method == 'GET':
#         return render_template('login05.html')
#     elif request.method == 'POST':
#         uname = request.form.get('uname')
#         pwd = request.form.get('pwd')
#         print(uname)
#         print(pwd)
#         if uname == 'zs' and pwd == '123':
#             return '登录成功'
#         else:
#             return render_template('login05.html')

class LoginView(MethodView):
    def get(self):
        return render_template('login05.html')
    def post(self):
        uname = request.form.get['uname']
        pwd = request.form.get['pwd']
        print(uname)
        print(pwd)
        if uname == 'zs' and pwd == '123':
            return "登录成功!"
        else:
            return render_template('login05.html',msg='用户名或密码错误')

app.add_url_rule('/login/',view_func=LoginView.as_view('login'))

if __name__ == '__main__':
    app.run(debug=True)
    
下面是html05.html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登录页面</title>
</head>

<body>

    <h2>Login</h2>
    <form action="/login/" methods='POST'>
        <table>
            <tr>
                <td>用户名:</td>
                <td><input type="text" name="uname"></td>
            </tr>
            <tr>
                <td>密码:</td>
                <td><input type="password" name="pwd"></td>
            </tr>
            <tr>
                <td><input type="submit" value="登录"></td>
            </tr>
        </table>
    </form>
    <span style="color: red;">{{ msg }}</span>
</body>

</html>


Python 全系列/第八阶段:轻量级Web开发利器-Flask框架/Flask视图高级 270楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637