2014-09-30 2 views
-1

Когда пользователь зарегистрирован, я хочу записать их IP-адрес. Как получить доступ к текущему ip и установить его как столбец по умолчанию?Как установить ip пользователя в качестве столбца по умолчанию?

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

Не могли бы вы уточнить? Вы пытаетесь создать таблицу? Сохранить значение? Извлечь значение? – Celeo

+0

Каждая новая запись должна содержать пользовательский ip addres. – scalloty

ответ

0

Вы можете использовать request.remote_addr, чтобы получить удаленный IP-решений текущего запроса. Вы не можете установить это как столбец по умолчанию, потому что определения модели происходят вне запроса, и было бы бессмысленно устанавливать по умолчанию здесь. Создавая нового пользователя, просто скажите my_new_user.regi_ip = request.remote_addr.

+0

В этом случае я использую модуль Flask-user. У меня нет доступа к объекту, чтобы установить это свойство. – scalloty

+0

user_fields ['regi_ip'] = request.remote_addr - это решение Cheers! – scalloty

+0

Ваш ответ верный, но я не помогаю. Только я пришел к такому выводу, прежде чем писать здесь. Однако мы примем ваш ответ. – scalloty

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 со значением по умолчанию).