1

Hi I'm getting an error when I run my code. I am trying to create a delete function on my webpage.

Thank you for your time.

My code is as follows:

home.html : error is in the href tag

{% for web in webs_list %}
                            <tr>
                            <th scope="row">
                                {{web.url.id}}
                            </th>
                            <td>
                                {{web.url.website}}
                                <a href="{% url 'delete-url' web.id %}" >
                                <button type="button" style="float: right;" class="btn btn-outline-danger">Delete</button>
                                </a>
                                <div class="space" ></div>
                                <button type="button" style="float: right;" class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#updateModal" >Update</button>
                            </td>
                            {% if web.status == "True"  %}
                            <td> <a class="btn btn-success">Up</a> </td>
                            {% else %}
                            <td> <a class="btn btn-danger">Down</a> </td>
                            {% endif %}
                            </tr>
                        {% endfor %}

urls.py

    from django.urls import path

from . import views

urlpatterns = [
    path('',views.home,name='home'),
    path('add_url',views.add_url,name='add-url'),
    path('search_url',views.search_url,name='search-url'),
    # path('update_url',views.update_url),
    path('delete_url/<int:web>',views.delete_url,name="delete_url"),
]

views.py

def delete_url(request,web):
    url = Website.objects.get(pk=web)
    url.delete()
    return redirect('monitor/home.html')

models.py

class Website(models.Model):
    website = models.CharField(max_length=250) 
meister
  • 31
  • 5

3 Answers3

0

1-option

Edit your urls.py

from django.urls import path
from . import views

app_name = 'your_app_name'
urlpatterns = [
    path('',views.home,name='home'),
    path('add_url',views.add_url,name='add-url'),
    path('search_url',views.search_url,name='search-url'),
    # path('update_url',views.update_url),
    path('delete_url/<int:web>',views.delete_url,name="delete_url"),

Edit your .html

{% for web in webs_list %}
                            <tr>
                            <th scope="row">
                                {{web.url.id}}
                            </th>
                            <td>
                                {{web.url.website}}
                                <a href="{% url 'your_app_name:delete-url' web.id %}" >
                                <button type="button" style="float: right;" class="btn btn-outline-danger">Delete</button>
                                </a>
                                <div class="space" ></div>
                                <button type="button" style="float: right;" class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#updateModal" >Update</button>
                            </td>
                            {% if web.status == "True"  %}
                            <td> <a class="btn btn-success">Up</a> </td>
                            {% else %}
                            <td> <a class="btn btn-danger">Down</a> </td>
                            {% endif %}
                            </tr>
                        {% endfor %}

2-option

Edit your urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.home,name='home'),
    path('add_url',views.add_url,name='add-url'),
    path('search_url',views.search_url,name='search-url'),
    # path('update_url',views.update_url),
    path('delete_url/<int:pk>',views.delete_url,name="delete_url"),

Edit your views.py

def delete_url(request,pk):
    url = Website.objects.get(id=pk)
    url.delete()
    return redirect('monitor/home.html')

3-option

Edit your urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.home,name='home'),
    path('add_url',views.add_url,name='add-url'),
    path('search_url',views.search_url,name='search-url'),
    # path('update_url',views.update_url),
    path('r'^delete_url/(?P<oid>[0-9]+)/$'',views.delete_url,name="delete_url"),

Edit your .html

{% for web in webs_list %}
                            <tr>
                            <th scope="row">
                                {{web.url.id}}
                            </th>
                            <td>
                                {{web.url.website}}
                                <a href="{% url 'your_app_name:delete-url' oid = web.id %}" >
                                <button type="button" style="float: right;" class="btn btn-outline-danger">Delete</button>
                                </a>
                                <div class="space" ></div>
                                <button type="button" style="float: right;" class="btn btn-outline-primary" data-bs-toggle="modal" data-bs-target="#updateModal" >Update</button>
                            </td>
                            {% if web.status == "True"  %}
                            <td> <a class="btn btn-success">Up</a> </td>
                            {% else %}
                            <td> <a class="btn btn-danger">Down</a> </td>
                            {% endif %}
                            </tr>
                        {% endfor %}
0

Check if the web variable has a value in the template. Are you sure you are passing a not null web value in the calling view context ? Maybe you can post the calling view code

Stefano Losi
  • 719
  • 7
  • 18
-1

at the href: "{% url 'delete-url' id=web.id %}"

  • The syntax was correct, you do not specify id= in template url tags – Stefano Losi Jan 17 '23 at 12:15
  • As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community Jan 17 '23 at 18:04