【问题标题】:Error when calling the metaclass bases调用元类库时出错
【发布时间】:2016-09-22 18:20:49
【问题描述】:

很难解决这个基本问题。我正在使用 python 2.7.10 来遵循使用 python 3.4 提供的烧瓶教程。我知道这两个版本之间存在一些差异,但似乎知识不足以克服这种情况。我在 python 方面有业余水平的经验。感觉它与类定义有关,但无法确定。是的,我查看了类似错误的解决方案,但无法将解决方案与我的问题联系起来。

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)

我的目录结构:

├── __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)

我选择不使用 wtforms 进行标记,因为我更关心在 2.7 和 3.4 之间的元类时我缺少什么。

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    这与 Python 版本无关。

    您在 form.py 中导入了错误的内容;你有form 而不是Form。前者是一个模块,后者是类,这是你应该继承的。

    【讨论】:

    • 谢谢。在views.py中也有“方法”而不是“方法”。一切就绪!
    猜你喜欢
    • 2012-07-24
    • 2011-09-18
    • 1970-01-01
    • 2012-12-07
    • 2016-07-03
    • 2014-08-30
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    相关资源
    最近更新 更多