Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python代码中将错误字符串转换为原始html_Python_Html_Flask - Fatal编程技术网

在python代码中将错误字符串转换为原始html

在python代码中将错误字符串转换为原始html,python,html,flask,Python,Html,Flask,对于Flask wtf,我想显示一条错误消息,其中应该包含指向现有配置文件的HTML链接。我需要将构建的链接转换为字符串,并将其附加到错误消息中 以下是代码的摘录: class AddBookmarkForm(Form): # Some Python code to define the form def validate_bookmark_url(self, field): if the bookmark_url exists: bookmark_id =

对于Flask wtf,我想显示一条错误消息,其中应该包含指向现有配置文件的HTML链接。我需要将构建的链接转换为字符串,并将其附加到错误消息中

以下是代码的摘录:

class AddBookmarkForm(Form):
   # Some Python code to define the form


def validate_bookmark_url(self, field):

    if the bookmark_url exists:
        bookmark_id = fetching the bookmarks id
        link = '<a href="bookmark/' + str(bookmark_id) + '">Show bookmark?</a>'
        raise ValidationError('User already exists. ' + link)
输出只是一个类似“用户已保存”的字符串。
如何在Python脚本中将其转换为可执行的HTML?

尽管我没有直接回答您的确切问题,但我还是会在这里提出一些建议。原因是,我认为你不应该以你试图做到的方式:

1如果用户已经存在,那么为什么还要向他们显示URL?只要说这个用户已经存在。存在的用户应该已经知道他们的URL。另外,我假设url/userid首先需要登录

2但是假设您仍然希望告诉用户登录,那么我宁愿将代码更改为:

 if the user_exists:
    return redirect(url_for(login)) # assuming you have a view function for login.
这样,您只需要让他们登录,不管怎样,如果用户已经存在,最终目标就是登录


我认为这是一个更好的方法。您不必担心在错误消息字符串中传递URL。作为一种好的做法,错误消息应该是简单的字符串。没有必要把它们复杂化

我不相信提出例外是你想要的。您应该仅在合适的情况下使用HTTP错误代码并返回HTML页面。引发异常将停止开发服务器并在生产服务器上返回500。这不是典型的Python异常。例如,如果用户想要注册,并且用户名已经被使用,Flask WTF允许我将输入字段旁边的一条小错误消息呈现为原始HTML。Flask WTF生成与表单关联的所有HTML,并将其包含在模板本身中。引发的错误消息/异常仅为原始HTML。在html格式的表单中,例如:我提出的错误消息HTMLPerhaps这将有一些用处,在链接的文档中,我看到ValidationError接受的参数比消息多。通过这种方式,我可以发送带有错误消息的链接,但我使用扩展Flask引导的quick_form方法来生成所有与引导相关的HTML。小心XSS。也就是说,等到有人注册用户名0>我可能会更改示例:假设我在数据库中存储了书签。用户希望输入相同的URL而不需要再次知道它。在这个场景中,我可以通过一个链接向现有书签提供这个小提示。我以前用flash试过,但是用字符串得到了相同的结果。我的最终意图是将异常内容从我的视图函数外包到相关的表单类,其中错误处理由Flask WTFs自定义异常函数完成。我更新了问题中的场景,过程仍然相同。