React-将状态传递给使用危险设置的HTML呈现的模板

时间:2019-07-22 20:23:12

标签: reactjs flask-restful

在我的应用中,我在前端使用React,在后端使用Flask。

某些页面呈现静态内容,为此,我直接从后端使用Jinja2模板。

因此,在前端,我从Flask获取模板作为响应对象,并使用dangerouslysetHTML注入模板,如下所示:

seeds.py

@seeds_bp.route('/seeds/<user_id>', methods=['GET', 'POST'])
def seeds(user_id):
    user = User.query.filter_by(id=user_id).first()
    template = render_template('seeds.html',items=items)
    response_object = {
                    'status': 'success',
                    'data': [{"content": template}]
    return jsonify(response_object), 200

并在获取数据后:

Seeds.jsx

    render(){
      const {userId} = this.props
      var seeds_html = this.state.seeds_template;
      var seeds_template = { __html: seeds_html };
      return (
         <div id="parent">
         <h1 className="title is-1"><font color="#C86428">Seeds</font></h1>
          <hr/><br/>
          <div dangerouslySetInnerHTML={seeds_template}/>
        </div>
      );       
    }
  }

发现是我渲染的html也具有重定向,也需要user_id ,我无法访问它,因此我无法将'user_id'状态传递给模板:

seeds.html

<form action="{{ url_for('menus.edit_menu', items=items, user_id=user_id) }}" method="post">

是否有现成的方法或任何其他自定义函数,因此我可以将此'user_id'状态传递给通过dangerouslysetHTML呈现的模板?

1 个答案:

答案 0 :(得分:0)

您可以使用table_name = 'table_name_1' # database and mock_data are fixtures defined in conftest.py def setup_module(database, mock_data): database.insert_data(table_name, mock_json_data) def test_1(): // some test def teardown_module(database): database.delete_data(table_name) 将变量注入模板,然后将其注入String.replace()。像这样:

dangerouslySetInnerHTML

然后:

<form action="{{ url_for('menus.edit_menu', items=items, user_id=_user_id) }}" method="post">