<form method="post" action="{% url 'cal:delete_event' id %}"> <input class="btn btn-primary btn-md" id="event-delete" type="submit" value="Delete"></form>
url(r'^events/(\d+)/delete_event$', views.delete_event, name='delete_event'),
def delete_event(request, id): Events.objects.filter(id=id).delete() return redirect("cal:home")
Hey all,Can anyone tell me the (probably quite obvious) reason my reverse match isn't working?
Hey,
Traceback:
======================================================================
ERROR: test_event_view (cal.tests.EventsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/williamholmes/organiser/organiser/cal/tests.py", line 79, in test_event_view
response = self.client.get('/cal/events/1/')
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/client.py", line 529, in get
**extra)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/client.py", line 333, in get
return self.generic('GET', path, secure=secure, **r)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/client.py", line 409, in generic
return self.request(**r)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/client.py", line 494, in request
six.reraise(*exc_info)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/utils/six.py", line 686, in reraise
raise value
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/core/handlers/exception.py", line 42, in inner
response = get_response(request)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/core/handlers/base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/core/handlers/base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/williamholmes/organiser/organiser/cal/views.py", line 61, in viewevent
return render(request, 'view_event.html', {'form':form})
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/shortcuts.py", line 30, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/loader.py", line 68, in render_to_string
return template.render(context, request)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/backends/django.py", line 66, in render
return self.template.render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/base.py", line 208, in render
return self._render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/utils.py", line 94, in instrumented_test_render
return self.nodelist.render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/base.py", line 994, in render
bit = node.render_annotated(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/loader_tags.py", line 174, in render
return compiled_parent._render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/test/utils.py", line 94, in instrumented_test_render
return self.nodelist.render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/base.py", line 994, in render
bit = node.render_annotated(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/base.py", line 961, in render_annotated
return self.render(context)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/template/defaulttags.py", line 439, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/urls/base.py", line 91, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/Users/williamholmes/.virtualenvs/organiser/lib/python3.5/site-packages/django/urls/resolvers.py", line 392, in _reverse_with_prefix
(lookup_view_s, args, kwargs, len(patterns), patterns)
django.urls.exceptions.NoReverseMatch: Reverse for 'delete_event' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['cal/events/(\\d+)/delete_event$']
cal:urls:
from django.contrib import adminfrom cal import views, models
app_name = 'cal'urlpatterns = [ url(r'^$', views.home, name='home'), url(r'^newevent/$', views.newevent, name='newevent'), url(r'^events/(\d+)/', views.viewevent, name='viewevent'), url(r'^(?P<month>\d+)/(?P<year>\d+)$', views.home, name='another-month'),
url(r'^events/(\d+)/delete_event$', views.delete_event, name='delete_event'),
]
urls:
from django.conf.urls import url, include
from cal import urls as cal_urlsfrom accounts import urls as accounts_urls
urlpatterns = [ url(r'^cal/', include(cal_urls, namespace="cal")), url(r'^accounts/', include(accounts_urls)),]
Let me know if you need anything else. :)
Cheers,
Will
url(r'^events/((?P<id>\d+))/delete/$', views.delete_event, name='delete_event'),
action="{% url 'cal:delete_event' id=an_event_id %}">
hi
this is for the id.
your url must be like this:
url(r'^events/((?P<id>\d+))/delete/$', views.delete_event, name='delete_event'),
you also need to give an amount in your template to the id:
action="{% url 'cal:delete_event' id=an_event_id %}">
On Friday 28 April 2017 16:31:57 shahab emami wrote:
> your url must be like this:
>
> url(r'^events/((?P<id>\d+))/delete/$', views.delete_event, name=
> 'delete_event'),
No, it MUST not. That just changes the problem from args to kwargs.
--
Melvyn Sopacua
On Friday 28 April 2017 14:08:05 Will Holmes wrote:
> django.urls.exceptions.NoReverseMatch: Reverse for 'delete_event' with
> arguments '('',)'
This tells you that id is not handed to the template that renders the view containing this form. Otherwise, arguments would be '('123456',)'.
--
Melvyn Sopacua