2016-05-25 2 views
3

Обнаружение очень сложной обертывания вокруг этой основной проблемы. Я использую 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.

ответ

3

Это не имеет никакого отношения к версиям Python.

Вы импортируете неправильную вещь в свой form.py; у вас есть form вместо Form. Первый - это модуль, последний - класс, из которого вы должны наследовать.

+0

Спасибо. Кроме того, в методах views.py использовался «метод» вместо «методов». Все готово! – papu

Смежные вопросы