我有一个芹菜任务,它定期运行,并为所有使用特定会计服务的公司获取一些数据。我现在需要点击一个按钮,使该任务按需运行,并且只获取当前公司的数据。
修改的芹菜任务:
@APP.task
def import_data_for_company(company_id):
for integration in settings.INTEGRATIONS:
if integration["owner"]["company_id"] == company_id:
print("omlette du fromage")
Django模板中的当前按钮
{% for integration in settings.INTEGRATIONS %}
{% if company.company_id == integration.owner.company_id %}
<div class="button">
<a class="btn" href="#">Import Data</a>
</div>
{% endif %}
{% endfor %}
我需要从Django模板中触发该任务,并在执行该任务时传递一个公司ID作为参数。但根据这条评论,我无法从Djano模板中传递参数。编写自定义模板标记/筛选器在这里似乎没有帮助。
通过此按钮调用该函数的选项是什么?
必须注意的是,我在这方面还是很幼稚的。
您应该创建一个接受公司id的视图。在该视图中,您将触发import_data_for_company
。然后,您可以重定向回初始视图。或者您也可以使用AJAX来触发视图。相应地在模板中添加URL:{% url 'some_name' company.company_id %}
urls.py:
path(
"your_desired_trigger_url/<id:company_id>/",
trigger_company_data,
name="some_name",
),
views.py:
def trigger_company_data(request, company_id):
import_data_for_company(company_id)
return HttpResponseRedirect(reverse("your_initial_view"))