2014-09-30 88 views
-1

當用戶註冊時,我想記錄他們的IP地址。我如何訪問當前的IP並將其設置爲列默認值?如何將用戶的IP設置爲列默認值?

regi_ip = db.Column(db.String(24), default='???') 
+0

您能否詳細說明一下?你想創建表嗎?存儲值?取值? – Celeo 2014-09-30 17:49:31

+0

每個新記錄都必須保留用戶ip地址。 – scalloty 2014-09-30 17:59:08

回答

0

您可以使用request.remote_addr來獲取發送當前請求的遠程IP。您不能將其設置爲列默認值,因爲模型定義發生在請求之外,並且無論如何設置默認值都沒有意義。創建新用戶時,只需說my_new_user.regi_ip = request.remote_addr

+0

在這種情況下,我使用Flask-user模塊。我無權訪問設置此屬性的對象。 – scalloty 2014-09-30 18:25:39

+0

user_fields ['regi_ip'] = request.remote_addr - 這是解決方案乾杯! – scalloty 2014-09-30 19:00:38

+0

您的回答是正確的,但我沒有幫助。在我寫這裏之前,我一個人得出了這個結論。不過,我們會接受你的回答。 – scalloty 2014-10-01 07:26:07

1

有可能有這樣的computed default value,但是不明智這將是:

def remote_addr(): 
    return request.remote_addr 

... 
    regi_ip = db.Column(db.String(24), default=remote_addr) 

但是,您可能希望確保該remote_addr做了明智的,即使沒有請求可用(也許具有默認值的try/except)。

相關問題