2011-06-01 56 views
10

我目前正在使用FlaskGoogle App Engine進行項目。調用get_flashed_messages()返回空當我閃則消息使用redirect()燒瓶消息閃爍無法通過重定向

@views.route('/todo/add', methods=["POST"]) 
def add_todo(): 
    flash('hey') 
    return redirect(url_for('todo_list')) 

但是,如果我註釋掉

# SERVER_NAME = 'localhost' 

那麼它似乎很好地工作。我的問題是我必須使用子域名,所以我需要設置SERVER_NAME。

這是怎麼回事?

回答

10

我得到了它的域名可讀! 訣竅是將服務器名稱設置爲帶點的東西。

因此'localhost'變成'app.local',app.local應該添加到/ etc/hosts中,指向與localhost相同的地址。

docs

請記住,不僅 瓶具有不知道 的是什麼子域的問題,你的瀏覽器不 也。大多數現代網絡瀏覽器 將不允許在其中沒有 點的服務器名稱上設置跨子域cookie 。因此,如果您的服務器名稱是 「localhost」,您將無法爲 設置「localhost」的Cookie和其每個 的子域。請選擇一個 不同的服務器名稱在這種情況下, 像'myapplication.local'並且添加 這個名字+你想要的子域名 使用到你的主機配置或設置一個 本地綁定。

+0

我發現只是註釋掉SERVER_NAME得到它的工作。我以前有'SERVER_NAME = 127.0.0.1:5000'。 – Eddy 2015-12-04 18:21:02

+0

注意,我需要在我的環境中將.dev更改爲.local。 – anvd 2016-12-02 23:55:51

3

您是否設置了Cookie以跨所有子域使用?

默認情況下,他們只能在設置這些

+0

感謝您的回覆。任何想法如何做到這一點?我發現你可以調用set_cookie(),但我不知道我會在哪裏做... http://flask.pocoo.org/docs/api/#response-objects – rgbrgb 2011-06-01 06:48:29