2013-04-24 3 views
5

Я построил веб-сайт на виртуальном боксе с Flask. Веб-сайт можно открыть на локальном хосте, но я не могу открыть его через переадресацию портов, поэтому я изменил код с manage.run() на manage.run(host='0.0.0.0').Ошибка флака: typeerror run() получил неожиданный аргумент ключевого слова 'host'

Проблема заключается в том, что я получаю эту ошибку:

typeerror run() got an unexpected keyword argument 'host'. 

Подобная ошибка возникает при изменении manage.run() к manage.run(debug=True). Я просто следовал за флягой. http://flask.pocoo.org/docs/quickstart/#a-minimal-application Может ли кто-нибудь сообщить мне, почему я получаю эту ошибку?

#!/usr/bin/env python 
#-*- coding:utf-8 -*- 

"""Manage Script.""" 

from sys import stderr, exit 

from flask.ext.script import Manager, prompt_bool 

from szupa import create_app 
from szupa.extensions import db 
from szupa.account.models import User 
from szupa.context import create_category_db 


app = create_app() 
manager = Manager(app) 


@manager.command 
def initdb(): 
    """Initialize database.""" 
    db.create_all() 
    create_category_db() 


@manager.command 
def migrate(created, action="up"): 
    module_name = "migrates.migrate%s" % created 
    try: 
     module = __import__(module_name, fromlist=["migrates"]) 
    except ImportError: 
     print >> stderr, "The migrate script '%s' is not found." % module_name 
     exit(-1) 
    if prompt_bool("Confirm to execute migrate script '%s'" % module_name): 
     try: 
      action = getattr(module, action) 
     except AttributeError: 
      print >> stderr, "The given action '%s' is invalid." % action 
      exit(-1) 
     action(db) 
     print >> stderr, "Finished." 


@manager.command 
def dropdb(): 
    """Drop database.""" 
    if prompt_bool("Confirm to drop all table from database"): 
     db.drop_all() 


@manager.command 
def setadmin(email): 
    """Promote a user to administrator.""" 
    user = User.query.filter_by(email=email).first() 
    if not user: 
     print >> stderr, "The user with email '%s' could not be found." % email 
     exit(-1) 
    else: 
     user.is_admin = True 
     db.session.commit() 


if __name__ == "__main__": 
    manager.run() 
+0

Рад, что вы нашли решение! Вы можете опубликовать ответ, объясняющий, как вы его решили, и ссылку на эту страницу. Это поможет кому-то еще, кто имеет такую ​​же проблему и попадает на этот пост. Вот [рабочая версия ссылки] (https://web.archive.org/web/20130218044123/http://docs.mongodb.org/manual/tutorial/write-a-tumblelog-application-with-flask- mongoengine /). – SuperBiasedMan

ответ

1

Как @ fangwz0577 сказал в комментарии, они решили эту проблему с помощью manager.add_command. Заархивированная версия их ссылки: here.

Next, create the manage.py file. Use this file to load additional Flask-scripts in the future. Flask-scripts provides a development server and shell:

from flask.ext.script import Manager, Server 
from tumblelog import app 

manager = Manager(app) 

# Turn on debugger by default and reloader 
manager.add_command("runserver", Server(
    use_debugger = True, 
    use_reloader = True, 
    host = '0.0.0.0')) 
+1

Мне не сообщили о фляге, поэтому, если кто-то хочет написать лучший ответ, пожалуйста. Я просто разместил это, чтобы процитировать соответствующий раздел и использовать рабочую ссылку для сохранения информации из комментария @ fangwz0577. – SuperBiasedMan

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