2016-05-25 9 views
3

この基本的な問題を回避することは非常に困難です。私はpython 3.4を使って配送されるフラスコチュートリアルに従うためにpython 2.7.10を使用しています。私は2つのバージョンのいくつかの違いを認識していますが、知識がこの状況を克服するのに十分ではないようです。私は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:私は私はそれが2.7と3.4の間メタクラスに来るとき私は欠けているものとのより多くの心配としてwtformsでタグ付けしないことを選択した

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) 

答えて

3

これはPythonのバージョンとは関係ありません。

あなたはあなたのform.pyに間違ったものをインポートしています。 Formの代わりにformがあります。前者はモジュール、後者はクラスです。これはあなたが継承しなければならないものです。

+0

ありがとうございます。また、views.pyに 'methods'の代わりに 'method'がありました。準備完了! – papu

関連する問題