Flask Admin может редактировать пользователь может изменять свои данные

Чтобы установить сообщение подтверждения перед закрытием окна, вы можете использовать

$(window).bind("beforeunload",function(event) {
    return "You have some unsaved changes";
});

& nbsp; & NBSP; & NBSP; Важно заметить, что вы не можете поместить confirm/alert внутрь beforeunload

Еще несколько заметок:

  1. НЕ все браузеры поддерживают это (дополнительная информация в разделе совместимости браузера на MDN)
  2. В Firefox вы ДОЛЖНЫ реально взаимодействовать со страницей, чтобы это сообщение появится пользователю.
  3. Каждый браузер может добавить свой текст в ваше сообщение.
blockquote>

Вот результаты с использованием браузеров, к которым у меня есть доступ:

Chrome:

Firefox:

Safari:

IE:

Просто чтобы сделать конечно - вам нужно включить jquery

blockquote>

Дополнительная информация о поддержке браузеров и удалении пользовательского сообщения:

  1. Chrome удален поддержка пользовательского сообщения в ver 51
  2. Opera удалена поддержка пользовательского сообщения в ver 38
  3. Firefox удалил поддержку настраиваемого сообщения в версии 44.0 (все еще ищет источник для этой информации)
  4. Safari удалил поддержку пользовательского сообщения в ver 9.1

0
задан Harvest 1018 31 March 2019 в 14:48
поделиться

1 ответ

Flask-Security поставляется со встроенной формой и возможностью смены пароля. Я бы порекомендовал использовать это. https://pythonhosted.org/Flask-Security/customizing.html

для редактирования информации о пользователе через представление Flask-Admin, вы можете переопределить эти методы, выполнив следующие действия. Не забудьте добавить «клиент» в качестве принятой роли в вашем классе пользователя flask-admin. Пользовательский фильтр должен фильтровать по current_user_id, поэтому никакой другой профиль пользователя не может быть отредактирован.

def get_query(self) 
    if "superuser" in current_user.roles:
        return self.session.query(self.model)  # as original source code

    else:  # for all other roles
        return self.session.query(self.model).filter(
            < insert custom filter here> )



def get_count_query(self): 
    if "superuser" in current_user.roles:
        return self.session.query(func.count('*')).select_from(self.model) # as original source code

    else: # for all other roles
        return self.session.query(func.count('*')).filter(
            <insert custom filter here>  )

Альтернативным решением было бы создать собственное представление (без использования flask-admin) и назвать его /myprofile.

0
ответ дан gittert 31 March 2019 в 14:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: