Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python TypeError:\uuuu init\uuuuuu()接受1个位置参数,但给出了3个_Python_Python 3.x_Flask - Fatal编程技术网

Python TypeError:\uuuu init\uuuuuu()接受1个位置参数,但给出了3个

Python TypeError:\uuuu init\uuuuuu()接受1个位置参数,但给出了3个,python,python-3.x,flask,Python,Python 3.x,Flask,我知道这个标题对一些老问题来说很熟悉,但我已经看了每一个问题,没有一个能解决。这是我的密码: TypeError: __init__() takes 1 positional argument but 3 were given Traceback (most recent call last) File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1836, in __call__ return s

我知道这个标题对一些老问题来说很熟悉,但我已经看了每一个问题,没有一个能解决。这是我的密码:

TypeError: __init__() takes 1 positional argument but 3 were given

Traceback (most recent call last)
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\_compat.py", line 33, in reraise
raise value
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\hp user\virtual_flask\lib\site-packages\flask\app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\hp user\PycharmProjects\flask123\views.py", line 19, in create
create_post = Post(my_form.title.data, my_form.text.data)
TypeError: __init__() takes 1 positional argument but 3 were given
The debugger caught an exception in your WSGI application. You can now look at the traceback which led to the error.
To switch between the interactive traceback and the plaintext one, you can click on the "Traceback" headline. From the text traceback you can also create a paste of it. For code execution mouse-over the frame you want to debug and click on the console icon on the right side.

You can execute arbitrary Python code in the stack frames and there are some extra helpers available for introspection:

dump() shows all variables in the frame
dump(obj) dumps all that's known about the object
我的课程如下:

Models.py

from app import db
from datetime import datetime


class Post(db.Model):
    post_id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100))
    text = db.Column(db.Text())
    created_time = db.Column(db.DateTime())

    def __init__(self, title, text, created_time=None):
        self.title = title
        self.text = text
        if created_time is None:
            self.created_time = datetime.utcnow()
        else:
            self.created_time = created_time
views.py

from app import app, db
from flask import render_template, request, url_for
from forms import CreateForm
from models import Post


@app.route('/')
def homepage():
    return render_template('base.html')


@app.route('/create', methods=['GET', 'POST'])
def create():
    form = CreateForm(csrf_enabled=False)
    if request.method == 'GET':
        return render_template('create.html', form=form)
    if request.method == 'POST':
        if form.validate_on_submit():
            create_post = Post(form.title.data, form.text.data)
            db.session.add(create_post)
            db.session.commit()
    return redirect(url_for('homepage'))
我尝试了所有可能的解决方案,并检查了我的代码是否有拼写错误。但我没有发现任何错误

错误

TypeError:\uuuu init\uuuuuu()接受1个位置参数,但给出了3个

发生在代码处

create_post = Post(my_form.title.data, my_form.text.data)
不是将位置参数传递给
Post
对象的创建,而是传递:


可能的来源:1。你的
db.Model
基类-不管它是什么-用
\uuuu init\uuuu
做一些奇怪的事情,2。在您的views.py中,
models.Post
不是您所期望的(错误的模块?
Post
名称稍后在模型或视图模块中隐藏?),3。您的
\uuuu init\uuuu
函数在models.py中缩进严重,因此
Post
使用继承的
\uuuuuu init\uuuu
,42。有人在你的密码上施了咒语。你有没有试过检查一下你眼中真正的
Post
?比如,你知道,用打印语句或调试器?
create_post = Post(title=my_form.title.data, text=my_form.text.data)