2013-03-23 9 views
7

चलें कहते हैं कि मैं एक परियोजना फेसबुकफ्लास्क: एकाधिक ऐप्स के साथ प्रोजेक्ट को कैसे आर्किटेक्ट करें?

मैं

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 

की तरह एक परियोजना संरचना की जरूरत है मैं यह कैसे संरचना कर सकते हैं का निर्माण करने की अच्छी तरह से इतना है कि जब मैं

python facebook/runserver.py 

चलाने यह से विचारों को लोड करता है चाहता हूँ मेरे सभी एप्स आंतरिक रूप से?
मैं इस संरचना को बनाए रखना चाहते हैं क्योंकि परियोजना का विस्तार आगे रास्ता

अधिक प्राकृतिक है

मैं उनके advice पालन करने के लिए कोशिश कर रहा हूँ, लेकिन वास्तव में समझ में नहीं आता है, जहां मैं

from flask import Flask 

app = Flask(__name__) 

और कैसे करने के लिए लिखने की ज़रूरत एक स्थान पर सभी क्षुधा से सभी दृश्य आयात करते हैं, मदद कृपया

तो मान लीजिए कि मैं facebook/__init__.py में ऊपर कोड लिखने, तो facebook/feed/views.py में, मैं क्या कर सकते हैं कि कैसे

from facebook import app 

उत्तर

7

मैं ब्लूप्रिंट की कोशिश की और एक समाधान है जो मेरे लिए काम करता के साथ आया है, मुझे पता है अगर आप अन्य विचारों डालते हैं।

परियोजना संरचना

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

कोड

# 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) 

कार्रवाई

* 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

देखें लिंक का लिंक काम नहीं कर रहा है। – Rynant

+0

इसे आज़माएं - https://gist.github.com/harit-sunrun/5227850#file-flask-blueprint-py – daydreamer

+1

हां, यह काम करता है। मैंने लिंक से कोड को उत्तर में जोड़ा है क्योंकि लिंक-केवल उत्तरों को प्राथमिकता नहीं दी जाती है (देखें: http://meta.stackexchange.com/a/8259) – Rynant

10

blueprints का उपयोग करें। आपके उप-अनुप्रयोगों में से प्रत्येक एक ब्लूप्रिंट होना चाहिए, और आप उनमें से प्रत्येक को अपनी मुख्य init फ़ाइल के अंदर लोड करते हैं।

from flask import Flask 
app = Flask(__name__) 

अपने दूसरे प्रश्न का उत्तर देना तुम में facebook/__init__.py

BTW, मेरी runserver.py और settings.py हमेशा facebook/ के तहत एक स्तर रहता है इस रखना चाहिए।

इस तरह

:

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 

runserver.py की सामग्री:

from facebook import app 
app.run() 

मुझे लगता है settings.py की सामग्री नहीं समझाया जाना चाहिए।

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

में विस्तार जवाब – Tigra

+0

धन्यवाद!, मैंने इसे अन्य तरीके से हल किया है, कृपया मेरा उत्तर – daydreamer

संबंधित मुद्दे