我有一个组件想要显示在除根路径之外的所有路径上。因此,我没有提供组件的所有路径Route,而是编写了以下内容:
<Route exact path={/^\/.+$/} component={() =>
<div><img src="../../../assets/AndreyBogdanov2.jpg" className="me" /></div>
} />
Run Code Online (Sandbox Code Playgroud)
该正则表达式匹配开头斜杠后包含任何字符的所有字符串。它按预期工作,但是在控制台中我看到一个错误:
Warning: Failed prop type: Invalid prop `path` of type `regexp` supplied to `Route`, expected `string`.
in Route (created by App)
in App
in Router (created by BrowserRouter)
in BrowserRouter
Run Code Online (Sandbox Code Playgroud)
我并不是在抱怨,而是想知道,它是如何运作的?
在 prop 的文档中,path它说它需要是任何可以path-to-regexp理解的 URL,而在 的path-to-regexp文档中,它说 regex 是一个有效的参数。PropTypes所以基本上,当遇到字符串以外的内容时,组件会抛出错误。
我的任务是从模板生成DOCX文件,然后通过Flask提供该文件。我使用python-docx-templates,它只是python-docx的包装,允许使用jinja模板。
最后,他们建议使用StringIO仅将文件保存在内存中,因此我的代码如下所示:
def report_doc(user_id):
# Prepare the data...
from docxtpl import DocxTemplate
doc = DocxTemplate(app.root_path+'/templates/report.docx')
doc.render({
# Pass parameters
})
from io import StringIO
file_stream = StringIO()
doc.save(file_stream)
return send_file(file_stream, as_attachment=True, attachment_filename='report_'+user_id+'.docx')
Run Code Online (Sandbox Code Playgroud)
保存时会引发错误TypeError: string argument expected, got 'bytes'。谷歌搜索后,我找到了这个答案,说ZipFile期待BytesIO。但是,当我用BytesIO代替StringIO时,它仅返回一个空文件,因此它不会引发任何错误,但绝对不会保存该文件。
在这种情况下究竟能做什么?如果这里有什么完全不对的地方,那么总体上该如何做?
谢谢!
UPD:这是对save函数调用的完整跟踪的异常:
File "/ms/controllers.py", line 1306, in report_doc
doc.save(file_stream)
File "/.env/lib/python3.5/site-packages/docx/document.py", line 142, in save
self._part.save(path_or_stream)
File "/.env/lib/python3.5/site-packages/docx/parts/document.py", line 129, in save
self.package.save(path_or_stream)
File "/.env/lib/python3.5/site-packages/docx/opc/package.py", line 160, in save
PackageWriter.write(pkg_file, self.rels, …Run Code Online (Sandbox Code Playgroud)