如何使用flask-admin编辑模型视图

2023-12-05

如何从flask-admin的编辑页面使用generate_password_hash设置password_hash

  1. 我在 python shell 中创建用户名和密码。密码经过哈希处理
  2. admin.add_view(MyModelView(User, db.session) - 让我编辑用户类模型
  3. 当我编辑密码并提交但密码以纯文本保存时。

如何从flask-admin编辑密码,密码应以散列类型保存

我的代码是:

from werkzeug.security import generate_password_hash, check_password_hash
class User(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     email = db.Column(db.String(120))
     password_hash = db.Column(db.String(64))
     username = db.Column(db.String(64), unique=True, index=True)

     @password.setter
     def password(self, password):
          self.password_hash = generate_password_hash(password)

     def __repr__(self):
          return '<User %r>' % self.username

#Create custom models view
class MyModelView(sqla.ModelView):
    @admin.expose('/login/')
    def index(self):
        return self.render('login.html')

# Create custom admin view
class MyAdminView(admin.BaseView):
    @admin.expose('/')
    def index(self):
        return self.render('myadmin.html')

admin = admin.Admin(name="Simple Views")
admin.add_view(MyAdminView(name='hello'))
admin.add_view(MyModelView(User, db.session))
admin.init_app(app)
app.run()

替代解决方案是子类化 aTextField添加自定义处理逻辑:

class MyPassField(TextField):
    def process_data(self, value):
        self.data = ''  # even if password is already set, don't show hash here
        # or else it will be double-hashed on save
        self.orig_hash = value

    def process_formdata(self, valuelist):
        value = ''
        if valuelist:
            value = valuelist[0]
        if value:
            self.data = generate_password_hash(value)
        else:
            self.data = self.orig_hash

class UserView(ModelView):
    form_overrides = dict(
        passhash=MyPassField,
    )
    form_widget_args = dict(
        passhash=dict(
            placeholder='Enter new password here to change password',
        ),
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用flask-admin编辑模型视图 的相关文章

  • 使用 iText 库读取 pdf 文件 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我是安卓新手 我计划开发一个PDF阅读器 我听说有一个名为 iText 的库可以

随机推荐

  • 如何将AWS CDK打包到Lambda层?

    将 AWS CDK 捆绑为 Lambda 层的最佳方式是什么 我需要从 Java 进程调用 CDK 因此希望使用 Java 11 运行时 然后将 Nodejs 和 CDK 安装为 2 个单独的层 目前 我下载 Nodejs 二进制文件 然后
  • Node.js - 基本节点 Web 服务器不提供 Socket.io 客户端文件

    我对 Node js 和 Socket io 非常陌生 我已经构建了一个非常基本的 Web 服务器 但是在使用它时 我无法加载 socket io 客户端文件 我得到 404 我正在尝试使用这个客户端代码 我的理解是 Node 应该发现这个
  • 收到错误消息“无法加载资源:服务器响应状态为 404(未找到)”

    我有一个简单的 MVC Web 应用程序 三周前它在本地运行没有问题 当我现在在 Netbeans 中打开应用程序并运行它时 一切似乎都工作正常 但是 当我转到浏览器 在我的例子中是谷歌浏览器 查看应用程序的前端 位于http localh
  • 在python中使用pandas根据其他列中给出的值选择列

    我有一个数据框 a b c d 1 1 3 3 3 5 4 1 1 4 6 1 0 我想根据 a 列中给出的值选择列数 在这种情况下 对于第一行 它只会选择 b 列 我怎样才能实现类似的目标 df iloc column b number
  • awk 脚本,用于将不同文件中同一行中多次出现的字符串模式替换为与字符串匹配的数字

    我需要一个 awk 脚本来搜索 内的任何字符串 如果它找到之前未找到的字符串 则应将其替换为索引计数器的当前值 开头为 0 并递增计数器 如果它在 中发现它已经知道的字符串 它应该查找该字符串的索引并将其替换为索引 这应该在多个文件中完成
  • 如何在 Windows 中使用 glib/gtkmm 打开/生成文件

    我已经尝试过 GError pError NULL string uri g filename to uri file c str NULL pError if g app info launch default for uri uri c
  • PHP:让文件返回自己的目录

    我无法在在线服务器上找到正确的目录 是否有一个函数可以返回存储文件的文件夹 在 PHP gt 5 3 中使用 DIR 和使用前dirname FILE http php net constants predefine http php ne
  • 为什么 strcpy 采用 const char* 作为 src 而不是 char *?

    我实现了自己的 strcpys 来查找 src as const char 和 char 之间是否有任何区别 但没有发现以下 2 个之间有任何区别 并且两者的工作原理相同 char my strcpy char dest char src
  • 是否可以检查两组是否相等?

    如果我有一些像这样的 HTML b 1 i 2 i 3 b 以及以下正则表达式 lt gt gt lt gt gt 然后它会匹配 b 1 i 2 i 我希望它只匹配开始标签和结束标签相同的 HTML 有没有办法做到这一点 Thanks Jo
  • Javascript:for循环中定义的每个事件处理程序都是相同的,使用最后一次迭代的值

    我无法理解 Javascript 中的范围规则 在下面的示例中 我假设范围 url 变量在 for 循环中是私有的 并且 onload event 函数将看到这个私有实例 但事情似乎并非如此 警报将弹出最后一个网址两次 如果有人能澄清发生了
  • 在python中设置字典的属性

    是否可以从 python 中的字典创建一个对象 使得每个键都是该对象的一个 属性 像这样的东西 d name Oscar lastName Reyes age 32 e Employee d print e name Oscar print
  • 基于工作流状态的不同权限

    我需要根据对象的工作流程状态对对象设置不同的权限 例如 经理组 仅在状态 草稿时才可以编辑对象 但 超级经理组 在状态 已验证时也可以编辑对象 似乎不可能使用ir model access我正在评估是否可以使用ir rule 看来不是 有没
  • 来自数据库的 Primefaces 树

    我有以下实体类 Entity Table name THE TREE catalog schema dbo public class TheTree implements Serializable private static final
  • 使用 Photokit 编写带有元数据的照片

    我目前正在使用 ALAsset 框架将图像从照片库保存到带有元数据的文档目录 我使用的代码是 ALAssetsLibrary library ALAssetsLibrary alloc init autorelease library as
  • Rails-4,ExecJS::Pages 中的ProgramError#welcome

    我正在尝试向我的 Rails 应用程序添加登录 注销功能 为此我添加了bcryptgem 用于密码加密和访问控制器 现在 当我在本地运行它时 我收到一条错误消息 在添加上述功能之前 我的应用程序运行良好 错误信息 TypeError Obj
  • Android 中的 Activity 或 Fragment?

    我正在创建一个带有操作栏的应用程序 选项卡会转到不同的网页 当用户单击不同的选项卡时 我希望以前的选项卡网页保持相同的状态 即再次按下选项卡时不重新加载 最好的方法是什么 单独活动 碎片 一项活动中有多个网络视图 Thanks 使用 Act
  • 从 mod_rewrite 规则中排除图像

    我的 htaccess 脚本无意中更改了图像 URL 因此 URL 路径中包含 portfolio 的任何图像都会受到不利影响 有什么方法可以将图像从该特定规则中排除吗 redirect 301 sitemap xml http www e
  • WPF 中线程的非常基本的解释?

    我对 WPF 非常陌生 我在互联网上查找了一些有关线程的示例和教程 他们有自己的描述方式 但对于像我这样天真的人来说 我想以自己的方式去理解 我可以使用数据库更新功能开始我的第一个线程 这是场景 我有大量数据要插入数据库中 现在让我们假设以
  • flowjs:调用方法“join”。无法在混合上调用方法

    假设我有一个恒定的动物 我用它导入 import animals from animals 假设动物常数为 hoofed horses sheep goats feline lions tigers canine dogs wolves 假
  • 如何使用flask-admin编辑模型视图

    如何从flask admin的编辑页面使用generate password hash设置password hash 我在 python shell 中创建用户名和密码 密码经过哈希处理 admin add view MyModelView