2011-09-22 34 views
10

Tôi đang sử dụng số flask-appengine-template của kamalgill làm điểm bắt đầu để tạo trang web cá nhân của mình. Tuy nhiên, tôi muốn có tên miền cấp cao nhất của mình làm cổng cho nhiều miền phụ tương ứng với các phần khác nhau (ứng dụng?) Của trang web của tôi.Định tuyến tên miền phụ Flask?

Ví dụ: www.spam.com nên định tuyến đến mẫu welcome.html. Tuy nhiên, eggs.spam.com nên định tuyến đến phần phụ "trứng" hoặc ứng dụng của trang web. Làm thế nào tôi có thể đạt được điều này trong bình?

Trả lời

25

Tùy thuộc vào độ phức tạp trang web của bạn sẽ là bạn có thể thêm tên miền phụ của bạn thông qua bạn URL registration:

from flask import Flask 

app = Flask(__name__) 

@app.route("/") 
def index(): 
    return "This is the index" 

@app.route("/", subdomain="eggs") 
def egg_index(): 
    return "You have eggs" 

Hoặc người nào khác sử dụng mô-đun Blueprint Flask của (api docs here).

Trong eggs.py:

eggs = Blueprint("eggs", __name__, subdomain="eggs") 

# Then you can register URLs here 
@eggs.route("/") 
def index(): 
    "You have eggs" 

Sau đó, trong routes.py chính của bạn:

from eggs import eggs 
from flask import Flask 

app = Flask(__name__) 

app.register_blueprint(eggs) 

@app.route("/") 
def index(): 
    return "This is the index" 

Hãy nhớ rằng, tất cả các tuyến Flask thật sự thể hiện của werkzeug.routing.Rule. Tư vấn Werkzeug's documentation for Rule sẽ hiển thị cho bạn một số điều mà các tuyến đường có thể thực hiện mà tài liệu của Flask chú ý hơn (vì tài liệu này đã được Werkzeug ghi nhận rõ ràng).

+9

Hãy nhớ thêm SERVER_NAME vào cấu hình bình để bật hỗ trợ tên miền phụ http://flask.pocoo.org/docs/config/ –

+2

+1 cho trứng –

+3

@Bạn có thể thêm ghi chú của Desmond vào câu trả lời của bạn hay không. Tôi đã bị mất hàng giờ trước khi tôi tìm thấy sự sửa chữa đó. 'app.config ['SERVER_NAME'] = 'example.com: 5000'' – cbron

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