My urls is not updating correctly adding some extra path itself

Viewed 72

enter image description here I want to update the leads while doing so If you look on the url section it says update_lead/1 which is perfectly right but when i hit update lead i am getting extra update lead in the url section due to which django cant reach its function i am very confuse about it please help enter image description here

here are my codes from update_lead.html

{% extends 'base.html' %}

{% block exhead %}


{% endblock exhead %}

{% block body %}
<div class="container">
  <h2>Update Lead</h2>
  <form action="update_lead_handle" method="POST">
    {% csrf_token %}
    <div class="form-row">
      <div class="form-group col-md-6">
        <label for="inputEmail4">Name</label>
        <input type="text" class="form-control" id="inputEmail4" required name="name" value="{{lead.name}}">
      </div>
      <div class="form-group col-md-6">
        <label for="inputPassword4">Subject</label>
        <input type="text" class="form-control" id="inputPassword4" name="subject" required value="{{lead.subject}}">
      </div>
    </div>
    <div class="form-row">
      <div class="form-group col-md-6">
        <label for="inputAddress">Email</label>
        <input type="email" class="form-control" id="inputAddress" name="email" placeholder="abc@email.com" value="{{lead.email}}">
      </div>
      <div class="form-group col-md-6">
        <label for="inputAddress2">Contact Number</label>
        <input type="number" class="form-control" id="inputAddress2" name="number"value = "{{lead.mobile_no}}" placeholder="99XX80XXXX">
      </div>
    </div>
    
    
    <div class="form-row">
      
      <div class="form-group col-md-4">
        <label for="inputState">Source</label>
        <select id="inputState" class="form-control" name="source" >
          <option selected value="{{lead.source}}">{{lead.source}}</option>
          {% for x in source %}
          <option value="{{x.name}}">{{x.name}}</option>
          {% endfor %}
          
        </select>
      </div>
      <div class="form-group col-md-4">
        <label for="inputState">Assign To</label>
        <select id="inputState" class="form-control" name="assign">
          <option selected value="{{lead.assign_to}}">{{lead.assign_to}}</option>
          {% for x in agent %}
          <option value="{{x.name}}">{{x.name}}</option>
          {% endfor %}
        </select>
      </div>
    </div>
    <div class="form-row">
      
      <div class="form-group col-md-4">
        <label for="inputState">Status</label>
        <select data-target="secondList" class="firstList selectFilter form-control" name="state">
          <option selected value="{{lead.state}}">{{lead.state}}</option>
          <option data-ref="one">Fresh</option>
          <option data-ref="two">Open</option>
          <option data-ref="pending">Pending</option>
          <option data-ref="close">Close</option>
      </select>
        <!-- <select id="subject"  class="form-control" name="source" >
          <option selected value="{{lead.state}}">{{lead.state}}</option>
        </select> -->
      </div>
      <div class="form-group col-md-4">
        <label for="inputState">If Pending / Close</label>
        <select data-target="thirdList" class="secondList selectFilter form-control" name="pending_close">
          <option value="-1">Select</option>
          <option data-ref="A" data-belong="close">We Cant Do</option>
          <option data-ref="A" data-belong="close">Low Budget</option>
          <option data-ref="B" data-belong="close">Client Converted</option>
          <option data-ref="C" data-belong="pending">Pending With Customer</option>
          <option data-ref="D" data-belong="pending">Pending On Us</option>
          <option data-ref="E" data-belong="pending">Pending With Process</option>
          <!-- <option data-ref="F" data-belong="three">Second Three</option> -->
      </select>
        <!-- <select id="topic" class="form-control" name="assign">
          <option selected value="{{lead.assign_to}}">{{lead.assign_to}}</option>
        </select> -->
      </div>
    </div>
    <!-- <div class="form-group">
      <label for="exampleFormControlTextarea1">Initial Followup</label>
      <textarea class="form-control" id="exampleFormControlTextarea1" rows="3" name="followup" value=""></textarea>
    </div> -->
    <button type="submit" class="btn btn-primary">Update Lead </button>
  </form>
</div>
<script src="http://code.jquery.com/jquery.min.js"></script>
<script>
  $(".selectFilter").on("change", function () { var e = $(this).data("target"), i = $(this).find(":selected").data("ref"); $("select." + e).val("-1"), null == i ? $("select." + e).find("option").each(function () { console.log("inside undefined"), $(this).removeAttr("disabled hidden") }) : $("select." + e).find("option").each(function () { var e = $(this).data("belong"), t = $(this).val(); i != e && -1 != t ? ($(this).prop("disabled", !0), $(this).prop("hidden", !0)) : ($(this).prop("disabled", !1), $(this).prop("hidden", !1)) }) });

</script>

{% endblock body %}

here are my codes from urls.py

from django.contrib import admin
from django.urls import path
from home import views

urlpatterns = [
    path('',views.index,name="index"),

    # create agent
    path('create_agent_page',views.create_agent_page,name="create_agent_page"),
    path('create_agent',views.create_agent,name="create_agent"),


    path('signup_page',views.signup_page,name="signup_page"),
    path('login_page',views.login_page,name="login_page"),
    path('signup_handle',views.signup_handle,name="signup_handle"),
    path('login_handle',views.login_handle,name="login_handle"),
    path('logout_handle',views.logout_handle,name="logout_handle"),

    #Lead handleing  

    path('create_lead',views.create_lead_page,name="create_lead"),
    path('follow_up/<int:id>',views.follow_up,name="follow_up"),
    path('update_lead/<int:id>',views.update_lead,name="update_lead"),
    path('update_lead_handle',views.update_lead_handle,name="update_lead_handle"),
    # path('update_lead',views.update_lead,name="update_lead"),
    path('creat_handle_lead',views.creat_handle_lead,name="creat_handle_lead"),
    path('lead_list',views.lead_list,name="lead_list"),

]

here are the two views which are requested

def update_lead(request,id):
    leads = Lead.objects.get(id = id)
    followup = Followup.objects.all
    agent = Agent.objects.all
    source = Source.objects.all
    print(f"the leads are {leads}")
    context = {"lead":leads,"followup":followup,"agent":agent,"source":source}
    # context = {"lead":leads,"followup":followup}
    return render(request,"home/update_lead.html",context)

def update_lead_handle(request):
    if request.method == "POST":
        organization=get_object_or_404(Organization,user=User.objects.get(username=request.user.username))
        name = request.POST.get('name')
        subject = request.POST.get('subject')
        email = request.POST.get('email')
        subject = request.POST.get('subject')
        number = request.POST.get('number')
        assign= request.POST.get('assign')
        source_o= request.POST.get('source')
        followup= request.POST.get('followup')
        status= request.POST.get('state')
        pending_close= request.POST.get('pending_close')

        x = Lead.objects.update(name=name,organ = organization,mobile_no = number,source = source_o,subject = subject,message = followup,email= email,assign_to = assign,state = status,closed_or_pending = pending_close)
        x.save()
        return HttpResponse("The lead has been updated successfully")
    else:
        return HttpResponse("Babe you are going wrong ")
1 Answers

Kindly put a slash before the update_lead_handle in your form action let it be "/update_lead_handle"

Related