Je trouve qu'il est très difficile de faire le tour de ce problème de base. J'utilise python 2.7.10 pour suivre un tutoriel sur Flask qui est dispensé avec python 3.4. Je suis conscient de certaines différences entre les deux versions, mais il semble que cette connaissance ne soit pas suffisante pour surmonter cette situation. J'ai une expérience de niveau amateur en python. J'ai l'impression que cela a quelque chose à voir avec la définition des classes, mais je ne parviens pas à trouver la solution. Et oui, j'ai parcouru les solutions pour une erreur similaire, mais je n'ai pas été en mesure de relier la solution à mon problème.
Traceback (most recent call last):
File "manage.py", line 5, in <module>
from flask_init import app
File "/Users/sapp/Desktop/ude/flask_init/__init__.py", line 12, in <module>
from author import views
File "/Users/sapp/Desktop/ude/flask_init/author/views.py", line 3, in <module>
from form import RegisterForm
File "/Users/sapp/Desktop/ude/flask_init/author/form.py", line 5, in <module>
class RegisterForm(form):
TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)
Ma structure de répertoire :
├── __init__.py
├── __init__.pyc
├── author
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── form.py
│ ├── form.pyc
│ ├── models.py
│ ├── models.pyc
│ ├── views.py
│ └── views.pyc
├── blog
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── views.py
│ └── views.pyc
├── manage.py
├── requirements.txt
├── settings.py
├── settings.pyc
├── templates
│ ├── author
│ └── base.html
└── venv
├── bin
├── include
├── lib
└── pip-selfcheck.json
manage.py :
import os, sys
from flask_script import Manager, Server
from flask_init import app
manager = Manager(app)
manager.add_command("runserver", Server(
do something
))
if __name__ == "__main__":
manager.run()
form.py :
from flask_wtf import form
from wtforms import validators, StringField, PasswordField
from wtforms.fields.html5 import EmailField
class RegisterForm(form):
pass
init.py :
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config.from_object('settings')
db = SQLAlchemy(app)
import blog.views
from author import views
views.py :
from flask_init import app
from flask import render_template, redirect
from form import RegisterForm
@app.route('/register', method=('GET', 'POST'))
def register():
form = RegisterForm()
return render_template('author/register.html', form=form)
J'ai choisi de ne pas baliser avec wtforms car je suis plus préoccupé par ce qui me manque en matière de métaclasses entre 2.7 et 3.4.