首页 > 解决方案 > 似乎无法触发 error_message 与 django3 一起显示?

问题描述

我正在研究 Django3 教程并用它做一些我自己的东西。我有这个模板sales_orders/details.html

<h1>{{ sales_order.number }}</h1>
{% if error_messsage %}
  <p><strong>
    {{ error_message }}
  </strong></p>
{% endif %}
<h2>Date: {{sales_order.date}}</h2>
<form action="{% url 'sales_orders:update' sales_order.id %}" method="POST">
  {% csrf_token %}
  <input type="text" name="totalAmount" id="totalAmount" value="{{ sales_order.totalAmount }}">
  <label for="totalAmount">Total Amount: $</label>
<input type="submit" value="Update">
</form>

而这两种观点

def detail(request, salesOrder_id):
    # try:
    #     sales_order =salesOrder.objects.get(pk=salesOrder_id)
    # except salesOrder.DoesNotExist:
    #         raise Http404('Question does not exist.')
    # return render(request, 'sales_orders/detail.html', {'sales_order':sales_order})
    sales_order = get_object_or_404(salesOrder, pk=salesOrder_id)
    return render(request, 'sales_orders/detail.html', {'sales_order':sales_order})

def update(request, salesOrder_id):
    sales_order = get_object_or_404(salesOrder, pk=salesOrder_id)
    print("got sales order")
    try:
        totalAmount = float(request.POST['totalAmount'])
    except ValueError:
        print("totalAmountError")
        return render(request, 'sales_orders/detail.html', {
            'sales_order': sales_order,
            'error_message': "Amount must be a number.",
        })
    print(f"got total Amount {totalAmount}")
    if totalAmount < 0:
        print("returning error message")
        # return error_messsage
        return render(request, 'sales_orders/detail.html', {'sales_order':sales_order, 'error_message':"Amount must be postiive",})
    else:
        print("redirect")
        sales_order.totalAmount = totalAmount
        sales_order.save()
        # Return with httpresponserequest aftersuccessful
        # Dealing with post data, toprevent dobule posting
        return HttpResponseRedirect(reverse('sales_orders:results', args=(sales_order.id,)))

我开始有目的地尝试引发错误{% if error_message %} {{error_message}}以显示它,但是尽管确认我应该返回,但我似乎无法做到这return render(request, 'sales_orders/detail.html', { 'sales_order': sales_order, 'error_message': "Amount must be a number.", })一点故意输入不良数据。有人可以告诉我我做错了什么吗?

编辑:和网址

app_name = 'sales_orders'
urlpatterns = [
    path('', views.index, name="index"),
    path('details/<int:salesOrder_id>/', views.detail, name='detail'),
    path('update/<int:salesOrder_id>/', views.update, name='update'),
    path('<int:salesOrder_id>/results', views.results, name='results'),
    path('<int:salesOrder_id>/addToAmount', views.addToAmount, name='addToAmount')
]

标签: djangodjango-3.0

解决方案


除了我犯的错字之外,我还必须删除我的 url 中的更新,并且事情与 {% if error_mesage %} 一样按预期工作。更新只是我拥有事物方式的一条发布路线,我认为这就是导致我的问题的原因。


推荐阅读