2017-03-05 3 views
1

Ich strukturiere jetzt Flask-Anwendung wie unten.Flask Router von anderen Datei

myserver 
- server.py 
- myapp 
-- urls.py 
-- models.py 
-- views.py 
-- consts.py 

Und meine Codes sind hier.

server.py

from flask import Flask 
from flask_sqlalchemy import SQLAlchemy 

# Flask App 
application = Flask(__name__) 

# SQLAlchemy 
application.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:./local.db" 
db = SQLAlchemy(application) 

if __name__ == "__main__": 
    application.run(debug=True) 

urls.py

from server import application 
from . import views 

@application.route('/') 
def version(): 
    return views.version() 

Aber wenn ich server.py und offene http://localhost:5000/ Server laufen, sagt 404 Not Found.

Also suchte ich auf stackoverflow, fand ich einige Beschreibungen über Blueprint. Und ich mache Blueprint namens App wie app = Blueprint('app', __name__) und registrieren Sie es von server.py Aber ich habe AttributeError: module 'urls' has no attribute 'app'.

Wie kann ich URL-Router in anderen Dateien definieren?

+0

Sie rufen "App" aber Python hat keine Ahnung, was "App" ist. Hast du vergessen, auch einen Import für 'App' hinzuzufügen? Können Sie den aktualisierten Code veröffentlichen? – FuzzyAmi

+0

@FuzzyAmi Ich füge auch diese Zeile in 'server.py'' von myapp importieren URLs 'und registrierte Blaupause urls.app – kde713

Antwort

1

Hier Beispiel mit Blueprint. Struktur der Dateien:

/project_folder 
    server.py 
    urls.py 
    urls2.py 

server.py:

from flask import Flask 
from urls import urls_blueprint 
from urls2 import urls2_blueprint 


app = Flask(__name__) 
# register routes from urls 
app.register_blueprint(urls_blueprint) 
# we can register routes with specific prefix 
app.register_blueprint(urls2_blueprint, url_prefix='/urls2') 

if __name__ == "__main__": 
    app.run(debug=True) 

urls.py:

from flask import Blueprint 

urls_blueprint = Blueprint('urls', __name__,) 


@urls_blueprint.route('/') 
def index(): 
    return 'urls index route' 

urls2.py:

from flask import Blueprint 
urls2_blueprint = Blueprint('urls2', __name__,) 


@urls2_blueprint.route('/') 
def index(): 
    return 'urls2 index route' 

Run-Server und öffnen http://localhost:5000/ und http://localhost:5000/urls2/.

Hoffe, das hilft.

+0

Mein Problem war nicht mit Blueprint verwandt, aber danke für die Beantwortung :) – kde713

+0

@RenoV viel Glück;) –

Verwandte Themen