Benim geliştiricim, geliştiricilerin işlevselliğini genişletmesine izin vermek için geliştiriliyor. Planım, bunu Blueprints'e bırakabilecekleri bir "uzantılar" dizini sağlayarak bunu yapmak ve dinamik olarak yüklenecekler. Bu (bu tutorial den modifed) Ben ithal etmek kullanan ediyorum kodFlask Blueprint AttributeError: 'module' nesnesinin 'name' hatası yoktur
from flask import Flask
import pkgutil
import sys
app = Flask(__name__)
EXTENSIONS_DIR = "extensions"
modules = pkgutil.iter_modules(path=[EXTENSIONS_DIR])
for loader, mod_name, ispkg in modules:
if mod_name not in sys.modules:
# It imports fine
loaded_mod = __import__(EXTENSIONS_DIR+"."+mod_name+"."+mod_name, fromlist=[mod_name])
# It does not register
app.register_blueprint(loaded_mod)
Bu projemin dizin düzeni olmasıdır. extensions
dizini, geliştiricilerin genişletilmiş işlevlerinde yer aldıkları yerdir.
/root
/extensions
/extension1
__init__.py
extension1.py
/extension2
__init__.py
extension2.py
simple_example.py
Sorun şu ki bu hatayı alıyorum ve bana ne söylediğinden emin değilim.
>python simple_example.py
Traceback (most recent call last):
File "simple_example.py", line 14, in <module>
app.register_blueprint(loaded_mod)
File "C:\Python27\lib\site-packages\flask\app.py", line 62, in wrapper_func
return f(self, *args, **kwargs)
File "C:\Python27\lib\site-packages\flask\app.py", line 880, in register_blueprint
if blueprint.name in self.blueprints:
AttributeError: 'module' object has no attribute 'name'
Basit uzantısı benim app.register_blueprint
çağrı başarılı sağlayan bir şekilde AttributeError
çözmek nasıl bu
from flask import Blueprint
extension1 = Blueprint('extension1', __name__)
@extension1.route("/my_route")
def treasure_list():
return "list of objects"
benziyor?
Ben çok benzer bir hata alıyorum . –
@DavidCrook: Temel olarak, gerçek bir "Blueprint" örneği olmayan bir şeyi kaydetmeye çalıştığınız anlamına gelir. Doğru nesneyi geçtiğinizden emin olun. –