2014-10-01 116 views
0

我使用Django的國家從CountryField獲得國旗,它的工作原理。但是,有些用戶的個人資料中沒有設置國家/地區,但我仍然需要顯示標誌。我的想法是從IP獲得一個國家,然後從該國或類似的國家獲得一面旗幟。Python/Django從IP獲得國家國旗

不幸的是,這不是在視圖中發生的,所以我沒有要求。我可以在模板中設置IP,然後在後端檢查是否沒有找到標誌(如果沒有提供國家/地區),然後以某種方式使用我從模板獲得的IP獲得標誌。有這樣的可能嗎?如果需要,GeoDjango已經包含在項目中。

也許有這樣做的完全不同的方式,但我是新的Django,仍然在學習。謝謝。

回答

0

首先,您應該查看視圖中的國家,而不是模板。該視圖應該完成所有數據庫工作和業務邏輯,模板只是以儘可能最佳的方式顯示視圖獲取的內容。如果您想將其應用於每個頁面,請考慮使用上下文處理器。

關於從IP獲得國家,這個問題的解釋是:Django, Retrieve IP location

+0

謝謝。這可能會讓我成爲一個國家名稱並解決第一部分。不過,我仍然需要獲得國旗。我會試着去看看django-countries是否有一些工具可以用來爲我提供一個沒有CountryFiled的國旗,只需要一個國家名稱。 – dnmh 2014-10-01 13:49:18

0

個人而言,我會設置一個通用的標誌作爲備用(Django的標誌吧?),如果用戶沒有設置自己的國家,而且是公平的如果用戶不這樣做,一定有一個原因。或者,您可以簡單地將該國家/地區字段設爲必填

並假設在該國根據其現有知識產權的人聽起來不正確。 想象一下,如果您通過VPN或代理服務器進行遠程工作......您就明白了。

如果您只是希望將人員重定向到基於IP的子域(不同語言)的站點,這會更有意義。