前提・実現したいこと
PythonとFlaskでのログインおよび新規登録機能
発生している問題・エラーメッセージ
新規登録(入力されたデータをdbに送信)しようとしたら、引数が正しく渡されておらず、dbに送信されません。
エラーメッセージ TypeError: __init__() takes 1 positional argument but 3 were given ### 該当のソースコード ```ここに言語名を入力 Python,Flask,sqlalchemy ソースコード newcomer.html models.py database.py ```ここに言語を入力 html コード <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Register</title> </head> <body> <h1>新規登録</h1> <a href="/top">ログイン画面に戻る</a> {% if status =="exit_user" %} <p>そのユーザーは既に登録されています</p> {% endif %} <form action="/register" method="POST"> <input type="text" name="user_name" placeholder="user name"> <input type="password" name="password" placeholder="password"> <input type="submit" value="新規登録"> </form> </body> </html> ```python コード ```from sqlalchemy import Column, Integer, String, Text, DateTime from models.database import Base from datetime import datetime class OnegaiContent (Base): __tablename__ = 'onegaiconkeytents' id = Column(Integer, primary_key=True) title = Column(String(128), unique=True) body = Column(Text) date = Column(DateTime, default=datetime.now()) def __init__(self, title=None, body=None, date=None): self.title = title self.body = body self.date = date def __repr__(self): return '<Title %r>' % (self.title) class User(Base): __tablename__ = "users" id = Column(Integer, primary_key=True) user_name = Column(String(128), unique=True) hashed_password = Column(String(128)) def __init__(self, user_name=None,hashed_password=None): self.user_name = user_name self.hashed_password = hashed_password # __repr__(self): def __repr__(self): return '<Name %r>' % (self.user_name) ```python ```ここに言語を入力 from sqlalchemy import create_engine from sqlalchemy.orm import scoped_session, sessionmaker from sqlalchemy.ext.declarative import declarative_base import os database_file = os.path.join(os.path.abspath(os.path.dirname(__file__)), 'onegai.db') print(database_file) engine = create_engine('sqlite:///' + database_file, convert_unicode=True) db_session = scoped_session(sessionmaker( autocommit=False, autoflush=False, bind=engine)) Base = declarative_base() Base.query = db_session.query_property() def init_db(): from models import models Base.metadata.create_all(bind=engine)
### 試したこと Sessionで接続したところ、エラー文が出なかったので、tableそのものは作成されているようです。 INSERT文で直接データを挿入しようとしましたが、同様のエラーが出ました。 ### 補足情報(FW/ツールのバージョンなど) Python 3.8.8 conda version : 4.9.2 ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/09 06:07