【发布时间】:2019-06-12 05:53:14
【问题描述】:
我正在尝试将选项的值作为 POST 表单中的对象发送,因此我使用 enctype='text/plain' 来获取对象而不是字符串。同时支持的媒体类型为'application/json'
这里是模板:
<form class="" action="/api/meal_planner/" method="post" enctype='text/plain'>
{% csrf_token %}
<h3> Starters </h3>
{% for food in foods %}
{% if food.type == 'starter' %}
<div id="f{{ forloop.counter }}">
<h3> {{ food.display_name }} </h3>
<div class="details">
<ul>
<li>calories: {{food.cal}}</li>
<li>carbs: {{food.carbs}}</li>
<li>carbs: {{food.carbs}}</li>
<li>fibers: {{food.fibers}}</li>
<li>proteins: {{food.proteins}}</li>
<li>lipids: {{food.lipids}}</li>
</ul>
</div>
<div class="image">
<img src="{{food.imgUrl}}">
</div>
</div>
{% endif %}
{% endfor %}
<div class="select">
<select name='starter'>
{% for food in foods %}
{% if food.type == 'starter' %}
<option value='{"display_name":"{{food.display_name}}","cal":{{food.cal}}}'>{{ food.display_name }} </option>
{% endif %}
{% endfor %}
</select>
</div>
你看到的选项是:
<option value='{"display_name":"{{food.display_name}}","cal":{{food.cal}}}'>{{ food.display_name }} </option>
所以我可以拥有这样的身体: Body of POST
这是 Django API:
@api_view(["POST"])
def FoodResponse(foodData):
try:
#defining variables
calMoy=500
percentage=0.1
calSum=0
donnee = json.loads(json.dumps(foodData.data))
print (donnee)
calSum= calSum + donnee["starter"]["cal"]+ donnee["dish"]["cal"]+ donnee["desert"]["cal"]
if ( (calSum < calMoy*(1-percentage)) or (calSum > calMoy*(1+percentage)) ):
return JsonResponse({
"status": "KO",
"food": donnee
})
else:
return JsonResponse({
"status": "OK",
"food": donnee
})
except ValueError as e:
return Response(e.args[0],status.HTTP_400_BAD_REQUEST)
这是错误:
【问题讨论】:
标签: html django django-rest-framework django-templates