2013-03-23 27 views
7

phép nói rằng tôi muốn xây dựng một dự án Facebookbình: làm thế nào để kiến ​​trúc sư dự án với nhiều ứng dụng?

Tôi cần một cấu trúc dự án như

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 

Làm thế nào tôi có thể cấu trúc này cũng vậy mà khi tôi chạy

python facebook/runserver.py 

Nó nạp điểm từ tất cả ứng dụng của tôi trong nội bộ?
Tôi muốn giữ lại cấu trúc này vì mở rộng dự án hơn nữa là tự nhiên hơn cách

Tôi cố gắng để làm theo advice của họ, nhưng không thực sự hiểu nơi tôi cần phải viết

from flask import Flask 

app = Flask(__name__) 

và làm thế nào để nhập khẩu tất cả các quan điểm từ tất cả các ứng dụng tại một nơi, xin vui lòng giúp

Nếu cho phép nói rằng tôi viết mã trên trong facebook/__init__.py, sau đó như thế nào trong facebook/feed/views.py, tôi có thể làm

from facebook import app 

Trả lời

7

Tôi đã thử các bản thiết kế và đã đưa ra một giải pháp mà làm việc cho tôi, cho tôi biết nếu bạn có những ý tưởng khác.

Cấu trúc dự án

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) 

Trong Action

* 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

Liên kết tới ý chính không hoạt động. – Rynant

+0

Hãy thử điều này - https://gist.github.com/harit-sunrun/5227850#file-flask-blueprint-py – daydreamer

+1

Có, đã hiệu quả. Tôi đã thêm mã từ liên kết đến câu trả lời vì câu trả lời chỉ liên kết không được ưa thích (xem: http://meta.stackexchange.com/a/8259) – Rynant

10

Sử dụng blueprints. Mỗi một trong các ứng dụng con của bạn nên là một kế hoạch chi tiết, và bạn tải mỗi một trong số chúng bên trong tệp init chính của bạn.

Trả lời câu hỏi thứ hai của bạn

from flask import Flask 
app = Flask(__name__) 

Bạn nên đưa điều này vào facebook/__init__.py

BTW, tôi runserver.pysettings.py luôn cư trú một cấp dưới facebook/.

Như thế này:

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 

Nội dung runserver.py:

from facebook import app 
app.run() 

Tôi cho rằng nội dung của settings.py không nên giải thích.

Nội dung 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

mở rộng câu trả lời – Tigra

+0

Cảm ơn!, Tôi đã sắp xếp theo cách khác, vui lòng xem câu trả lời của tôi – daydreamer

Các vấn đề liên quan