【发布时间】:2019-01-30 04:08:33
【问题描述】:
我已经看到发布了几个相同的问题,但我仍然不明白如何做到这一点。我有显示超链接的模板,这些超链接导致要更新的实际记录。我想在模板上放置一个按钮,该按钮仅显示列表,以便能够通过循环遍历此“临时”表中的每个记录来在表中创建记录。该行为旨在模仿电子商务网站上的购物车。这就是我将记录存储在此临时表中的原因,因为当它们“签出”时,它们将被视为具有多行的 1 个订单。
在视图中编写逻辑不是问题,它在按下按钮时调用此函数,我不明白。谢谢!
编辑:
我为单击提交按钮时想要发生的行为编写了一些伪代码
def process_basket(request):
basket = table1
dbtable = table2
for each record in basket:
create new record in dbtable
delete record in basket after
refresh page to show empty list
更新:
basket.html
{% load static %}
{% if user_list %}
<table>
{% for created_req in user_list %}
<tr>
<td>
<a href="{% url 'requisition:basket_item' created_req.id %}">{{ created_req }}</a>
</td>
</tr>
{% endfor %}
</table>
<form action="{% url 'requisition:process_basket' %}" method="POST">
{% csrf_token %}
<input type="button" value="Submit Req">
</form>
{% else %}
<p>No requisitions in basket</p>
{% endif %}
urls.py
path('basket/', views.basket_list, name='basket'),
path('basket/<int:id>/', views.update_basket_item, name='basket_item'),
path('basket/process/', views.process_basket, name='process_basket')
views.py
def process_basket(request):
if request.method == 'POST':
user = CurrentUser.objects.get(username=request.user)
basket_list = ReqBasket.objects.filter(user=user)
# Make decision as to set the status depending on what flag is ticked
# Assitance, Submitted
cur_status = RequisitionStatus.objects.get(status='Created')
header = Requisition.objects.create(username=user, status=cur_status)
for line in len(basket_list):
req_line = RequisitionLine.objects.create(
parent_req = header,
sequence = line,
description = basket_list.description,
extra_information=basket_list.extra_information,
quantity = basket_list.quantity,
price = basket_list.price,
req_delivery_date = basket_list.req_delivery_date)
return redirect(reverse('requisition:submitted_reqs'))
else:
return redirect(reverse('requisition:basket'))
【问题讨论】:
-
到目前为止您尝试过什么?你的模型?
-
通过 AJAX 调用。
-
@sachin 我还没有尝试过任何东西,我只想在按下按钮时调用一个函数来运行。我不想进行 url 调用。
-
@WillemVanOnsem 我还没有对 AJAX 调用做过任何工作,如果你不介意的话,你能提供更多信息吗?
-
要触发此功能,您需要有一个额外的 url,您将向其发出请求。
标签: django django-rest-framework django-templates django-views