2013-03-23 9 views
7

Powiedzmy chcę zbudować projekt Facebookkolba: jak zaprojektować projekt za pomocą wielu aplikacji?

Potrzebuję struktury projektu jak

facebook/ 
     __init__.py 
     feed/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     chat/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     games/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     common/ 
      common.py 

     runserver.py 

Jak mogę uporządkować to również tak, że gdy uruchamiam

python facebook/runserver.py 

Ładuje widoki wszystkie moje aplikacje wewnętrznie?
chcę zachować tę strukturę, ponieważ rozszerzenie projektu dodatkowo jest bardziej naturalny sposób

Staram się śledzić ich advice, ale nie bardzo rozumiem gdzie muszę napisać

from flask import Flask 

app = Flask(__name__) 

i jak zaimportować wszystkie widoki ze wszystkich aplikacji w jednym miejscu, pomóż

Jeśli powiedzmy piszę powyższy kod w facebook/__init__.py, to jak w facebook/feed/views.py, mogę zrobić

from facebook import app 

Odpowiedz

7

Próbowałem uprzednia i wpadł na rozwiązanie, które działa dla mnie, daj mi znać, jeśli masz inne pomysły.

struktura projektu

facebook/ 
     runserver.py 
     feed/ 
      __init__.py 
      views.py 
     chat/ 
      __init__.py 
      views.py 

Kod

# create blueprint in feed/__init__.py 
from flask import Blueprint 

feed = Blueprint('feed', __name__) 
import views 

# create blueprint in chat/__init__.py 
from flask import Blueprint 

chat = Blueprint('chat', __name__) 
import views 

# add views (endpoints) in feed/views.py 
from . import feed 

@feed.route('/feed') 
def feed(): 
    return 'feed' 

# add views (endpoints) in chat/views.py 
from . import chat 

@chat.route('/chat') 
def chat(): 
    return 'chat' 

# register blueprint and start flask app 
from flask import Flask 
from expense import expense 
from budget import budget 

app = Flask(__name__) 
app.register_blueprint(feed) 
app.register_blueprint(chat) 
app.run(debug=True) 

W Akcji

* Running on http://127.0.0.1:5000/ 
# Hit Urls 
http://127.0.0.1:5000/feed # output feed 
http://127.0.0.1:5000/chat # output chat 
+0

Link do sedna nie działa. – Rynant

+0

Spróbuj tego - https://gist.github.com/harit-sunrun/5227850#file-flask-blueprint-py – daydreamer

+1

Tak, to działało. Dodałem kod z linku do odpowiedzi, ponieważ odpowiedzi nie są preferowane (patrz: http://meta.stackexchange.com/a/8259) – Rynant

10

Użyj blueprints. Każda z pod-aplikacji powinna być schematem i ładować każdy z nich w głównym pliku init.

odpowiadając na drugie pytanie

from flask import Flask 
app = Flask(__name__) 

Należy umieścić to pod facebook/__init__.py

BTW mój runserver.py i settings.py zawsze przebywa jeden poziom pod facebook/.

Jak to:

facebook/ 
     __init__.py 
     feed/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     chat/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     games/ 
      __init__.py 
      models.py 
      business.py 
      views.py 
     common/ 
      common.py 

runserver.py 
settings.py 

Zawartość runserver.py:

from facebook import app 
app.run() 

Przypuszczam treść settings.py nie powinno być wyjaśnione.

Zawartość facebook/__init__.py:

from flask import Flask 
app = Flask(__name__) 
app.config.from_object('settings') 
from blog.views import blog #blog is blueprint, I prefer to init them inside views.py file 
app.register_blueprint(blog,url_prefix="/blog") 
+0

rozszerzył odpowiedź – Tigra

+0

Dzięki!, Posortowałem to w inny sposób, proszę zobaczyć moją odpowiedź – daydreamer

Powiązane problemy