我创建了一个脚本,用于读取Excel文档,解析数据并在Wagtail中创建和保存新的Page
实例。
我希望当用户上传Excel工作表时,在Wagtail管理员中运行此脚本,通过DocumentChooserPanel
选择它并点击运行。
我已按照官方Wagtail hooks guide创建新的管理视图,并使用扩展wagtailadmin/base.html
的模板将其连接起来。我不确定如何调用DocumentChooserPanel
并在我的模板中显示它。我也不完全确定如何使用所选文档并使其与我的脚本进行交互。有关如何进行此操作的任何指示?或者我可以使用的资源/教程?
wagtailadmin / data_upload.html
{% extends "wagtailadmin/base.html" %}
{% block titletag %}Upload Data{% endblock %}
{% block content %}
<header class="merged nice-padding">
<div class="row row-flush">
<div class="col12">
<h1>Data Upload Centre</h1>
<h3>Upload data here based on Excel spreadsheet templates.</h3>
</div>
</div>
</header>
{% endblock %}
wagtail_hooks.py
@hooks.register('register_admin_menu_item')
def register_data_menu_item():
return MenuItem('Data Upload', reverse('data_upload_view'), classnames='icon icon-code', order=10000)
def data_upload_view(request):
template = "wagtailadmin/data_upload.html"
context = {}
return render(request, template, context)
@hooks.register('register_admin_urls')
def urlconf_time():
return [
url(r'^data-upload-centre/$', data_upload_view, name='data_upload_view'),
]
答案 0 :(得分:1)
为了清晰起见,将评论中的解决方案复制为答案。
DocumentChooserPanel
可能不适合这里。据我了解,您不需要保存文档(选择器所做的),而只需要处理它。我认为,香草FileField
字段可能更适合。 Django文档中有一个关于如何进行basic file upload的示例。
FWIW,根据文件大小,通过FileField
上传的文档将为kept in memory or saved as a temporary file。