-1

我有一个主页(OnlinePricing.html)作为用户输入一些信息的表单。输入一些需要的信息后,如果用户点击“获取Pice”按钮,价格将显示在底部页面(这里我使用htmx部分刷新主页)。

如果用户单击“立即订购”按钮,则需要重定向到路径为“homepage/order/”的名为 CreateOrder.html 的新页面,其中价格将显示在此新页面中。

以下是完整代码。当前的问题与veiws.py中CreateOrder的功能有关。当点击“立即订购”时,页面重定向但有一些错误信息:

NoReverseMatch at /order/
Reverse for 'CreateOrder' with keyword arguments '{'kwargs': {'pickup_address': 'xxx', 'delivery_address': 'xxx', 'distance': xxx, 'charge': xxx}}' not found. 1 pattern(s) tried: ['order\\/\\Z']

#views.py

        def OnlinePricing(request):
            result = 0
            pickup_date = ""
            pickup_address = ""
            delivery_address = ""
            weight = 0
            volume = 0
            height = 0
            stack = ""
            FTL = ""
            time_window = ""
            dist = ""
            charge = ""
            navi_load = ""
            navi_unload = ""
            error_message = ""
            try:
                if request.method == "POST":
                    # print("REQUEST ", request.POST)
                    pickup_date = request.POST.get('pickup_date')
                    pickup_address = request.POST.get('pickup_address')
                    delivery_address = request.POST.get('delivery_address')
                    weight = float(request.POST.get('weight'))
                    volume = float(request.POST.get('volume'))
                    height = float(request.POST.get('height'))
                    stack = request.POST.get('stack')
                    FTL = request.POST.get('ftl')
                    time_window = request.POST.get('time_window')
                    charge, dist, navi_load, navi_unload, error_message = pricing(pickup_address, delivery_address, weight, volume, height, stack, FTL, time_window)
                    request.session['navi_load'] = navi_load
                    request.session['navi_unload'] = navi_unload
                    request.session['dist'] = dist
                    request.session['charge'] = charge
                    if error_message != "":
                        charge = error_message
                    print("charge: ", charge, " dist: ", dist, " date: ", pickup_date)
        
                if request.headers.get('Hx-Request') == 'true':
                    # return only the result to be replaced
                    # return HttpResponse(str(result))
                    # return HttpResponse(str(dist),str(charge))
                    return render(request, 'OnlinePricing/CreateOrder.html', { 'pickup_address': navi_load,
                                                                                         'delivery_address': navi_unload,
                                                                                         'distance': dist, 'charge': charge})
        
                else:
                    # return render(request, 'OnlinePricing/OnlinePricing.html', {'result': result})
                    return render(request, 'OnlinePricing/OnlinePricing.html', { 'pickup_address': navi_load,
                                                                                 'delivery_address': navi_unload,
                                                                                 'distance': dist, 'charge': charge})
            except:
                charge = "wrong input! "
                return render(request, 'OnlinePricing/OnlinePricing.html', { 'pickup_address': navi_load,
                                                                                 'delivery_address': navi_unload,
                                                                                 'distance': dist, 'charge': charge})



def CreateOrder(request):
    navi_load = request.session['navi_load']
    navi_unload = request.session['navi_unload']
    dist = request.session['dist']
    charge = request.session['charge']
    # return render(request, 'OnlinePricing/CreateOrder.html', {'pickup_address': navi_load,
    #                                                                   'delivery_address': navi_unload,
    #                                                                   'distance': dist, 'charge': charge})
    return redirect('CreateOrder', kwargs={'pickup_address': navi_load,
                                                                        'delivery_address': navi_unload,
                                                                        'distance': dist, 'charge': charge})
        
        

#urls.py

urlpatterns = [
            path('', views.OnlinePricing, name='OnlinePricing'),
            path('order/', views.CreateOrder, name='CreateOrder'),
        ]
        
        

#主页 HTML

 <form method="POST" hx-post="{% url 'OnlinePricing' %}" hx-target="#pickup_address"
          hx-target="#delivery_address" hx-target="#distance" hx-target="#charge" @submit.prevent>
        {% csrf_token %}

    <div>
      <label for="s1">pickup_address:</label>
      <input type="text" name="pickup_address" value="" required="required" />
    <br /><br />
    </div>

    <div>
      <label for='s1'>delivery_address:</label>
      <input type="text" name="delivery_address" value="" required="required" />
    <br /><br />
    </div>

...

    <div>
        <span id="pickup_address"> {{ pickup_address }} </span>
    </div>

    <div>
        <span id="delivery_address"> {{ delivery_address }} </span>
    </div>

    <div>
        <span id="distance"> {{ distance }} </span>
    </div>

    <div>
        <span id="charge" > {{ charge }} </span>
    </div>
            <button type="submit">Get Price</button>  <button type="submit" style="margin-left:10px;">Order Now</button>
  </form>
        
        

#CreateOrder.html

            <div>
                    <label>pickup_address:</label>
                    <span id="pickup_address"> {{ pickup_address }} </span>
            </div>
        
            <div>
                    <label>delivery_address:</label>
                    <span id="delivery_address"> {{ delivery_address }} </span>
            </div>
        
        
            <div>
                    <label>dist:</label>
                    <span id="distance"> {{ distance }} </span>
            </div>
        
            <div>
                    <label>charge:</label>
                    <span id="charge" style="color: #ff0000;font-size:25px"><b>{{ charge }}</b></span>          
            </div>
        
        </html>

我的网站\urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('OnlinePricing.urls'))
    # path('', include(('OnlinePricing.urls','OnlinePricing'),namespace='OnlinePricing'))
]
4

0 回答 0