找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 589|回复: 0

[求助] python flask 寫資料進入sqlite 顯示 missing 1 required positional argum

2

主题

3

帖子

3

积分

贫民

积分
3
本人不存在 发表于 2022-9-30 10:53:07 | 显示全部楼层 |阅读模式
windows 10
pycharm

flask
sqlite

main.py
currentdirectory = os.path.dirname(os.path.abspath(__file__))

#create a Flask Instance
app = Flask(__name__)

#=====add database=====
app.config['SQLAlCHEMY_DATABASE_URI'] = 'sqlite:////Users/user/PycharmProjects/flask/users.db'

# app.config['SECRET_KET'] = 'password'
#secret key
app.secret_key = 'password'

#initialize the database
db = SQLAlchemy(app)

#creat model
class Users(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.String(200), nullable = False)
    email = db.Column(db.String(120), nullable = False, unique = True)
    date_added = db.Column(db.DateTime, default = datetime.utcnow)


    def __init__(self, name, email, date_added):
        self.name = name
        self.email = email
        self.date_added = date_added

    #create a string
    def __repr__(self):
        return '<Name %r>' % self.name


class Config(object):
   SQLALCHEMY_DATABASE_URI = 'sqlite:////Users/user/PycharmProjects/flask/users.db'

app.config.from_object(Config)

#Create a Form Class
class UserForm(FlaskForm):
    name = StringField("Name", validators = [DataRequired()])
    email = StringField("Email", validators = [DataRequired()])
    submit = SubmitField('Submit')

#Create a Form Class
class NamerForm(FlaskForm):
    name = StringField("What is your name", validators = [DataRequired()])
    submit = SubmitField('Submit')


@app.route('/user/add', methods = ['GET', 'POST'])
def add_user():
    name = None
    #=====這個是根據上面的class UserForm(FlaskForm):=====
    form = UserForm()
    if form.validate_on_submit():
        user = Users.query.filter_by(email = form.email.data).first()
        if user is None:
            user = Users(name = form.name.data, email = form.email.data)
            db.session.add(user)
            db.session.commit()
        name = form.name.data
        form.name.data = ''
        form.email.data = ''
        flash("User Added Successfully!")
    our_users = Users.query.order_by(Users.date_added)
    return render_template('add_user.html', form = form, name = name, our_users = our_users)

#create name page
@app.route('/name', methods = ['GET', 'POST'])
def name():
    name = None
    form = NamerForm()
    #Validate form
    if form.validate_on_submit():
        name = form.name.data
        form.name.data = ''
        flash("Form Submitted Successfully")
    return render_template("name.html", name = name, form = form)
if __name__ == '__main__':
    app.run()

add_user.html

{%extends 'base.html'%}

{%block content%}

{%for message in get_flashed_messages()%}

    <div class="alert alert-success alert-dismissible fade show" role="alert">
        {{message}}
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
    </div>
{%endfor%}

{%if name%}
    <h1>Hello {{name}}!!</h1>
    <br/>
    <br/><br/>


{%else%}
    <h1>User List:</h1>
    <br/>
    <form method = 'POST'>
        {{form.hidden_tag()}}

        {{form.name.label(class="form-label")}}
        {{form.name(class="form-control")}}
        <br/>

        {{form.email.label(class="form-label")}}
        {{form.email(class="form-control")}}

        {{form.submit(class="btn btn-secondary")}}

    </form>

<br/><br/><br/>
{%for our_user in our_users%}
    {{our_user.id}}. {{our_user.name}} - {{our_user.email}}<br/>
{%endfor%}


{%endif%}

{%endblock%}

錯誤信息
C:\Users\user\PycharmProjects\flask\venv\Scripts\python.exe C:/Users/user/PycharmProjects/flask/hello.py
C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask_sqlalchemy\__init__.py:851: UserWarning: Neither SQLALCHEMY_DATABASE_URI nor SQLALCHEMY_BINDS is set. Defaulting SQLALCHEMY_DATABASE_URI to "sqlite:///:memory:".
  warnings.warn(
C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask_sqlalchemy\__init__.py:872: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATI** adds significant overhead and will be disabled by default in the future.  Set it to True or False to suppress this warning.
  warnings.warn(FSADeprecationWarning(
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Serving Flask app 'hello'
* Debug mode: off
127.0.0.1 - - [30/Sep/2022 08:52:10] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [30/Sep/2022 08:52:10] "GET /static/css/style.css HTTP/1.1" 304 -
127.0.0.1 - - [30/Sep/2022 08:52:10] "GET /favicon.ico HTTP/1.1" 404 -
127.0.0.1 - - [30/Sep/2022 08:52:11] "GET /user/add HTTP/1.1" 200 -
127.0.0.1 - - [30/Sep/2022 08:52:11] "GET /static/css/style.css HTTP/1.1" 304 -
[2022-09-30 08:52:14,098] ERROR in app: Exception on /user/add [POST]
Traceback (most recent call last):
  File "C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask\app.py", line 2525, in wsgi_app
    resp**e = self.full_dispatch_request()
  File "C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask\app.py", line 1822, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask\app.py", line 1820, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\user\PycharmProjects\flask\venv\lib\site-packages\flask\app.py", line 1796, in dispatch_request
    return self.ensure_sync(self.view_functi**[rule.endpoint])(**view_args)
  File "C:\Users\user\PycharmProjects\flask\hello.py", line 70, in add_user
    user = Users(name = form.name.data, email = form.email.data)
TypeError: __init__() missing 1 required positional argument: 'date_added'


本人在實際操作按提交的時候,出現問題。請問是什麽原因呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表