Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#29664 closed Cleanup/optimization (wontfix)

Need Proper error handling for CBV in urls.

Reported by: Amar Owned by: emiamar@…
Component: Core (URLs) Version: 2.1
Severity: Normal Keywords:
Cc: emiamar@… Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Amar)

When in urls.py if one misses to call as_view() (Example shown below) method django throws weird error. Need better way of handling error

Incorrect definition

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', HelloView)
]

Correct definition

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', HelloView.as_view())
]

Error

TypeError at /hello/

__init__() takes 1 positional argument but 2 were given

Request Method: 	GET
Request URL: 	http://localhost:8000/hello/
Django Version: 	2.0.7
Exception Type: 	TypeError
Exception Value: 	

__init__() takes 1 positional argument but 2 were given

Exception Location: 	/home/amar/.virtualenvs/djmongo/lib/python3.6/site-packages/django/core/handlers/base.py in _get_response, line 126

This make it really hard to figure out actual error. I faced this once and had to struggle for hours to understand what went wrong. Here is my PR

Change History (3)

comment:1 by Amar, 6 years ago

Description: modified (diff)

comment:2 by Ramiro Morales, 6 years ago

I'm afraid catching TypeError around the view callable execution is a too coarse net to have. what if the view (be it either a traditional function-based view, or a correctly invoked class based view via it's .as_view() method, etc.) result in a legitimate TypeError? Wouldn't the useful traceback that cold help the developer diagnose the issue be replaced by the new one that reports "Check if as_view() method called properly"?

In the end there a needs to be placed between handholding a developer which face this kind of problems, and the expectation of them reading the relevan documentation, i.e.

https://docs.djangoproject.com/en/dev/topics/class-based-views/#simple-usage-in-your-urlconf
https://docs.djangoproject.com/en/dev/topics/class-based-views/intro/#using-class-based-views

I'm ok with trying to be more helpful but not at the expense of reducing the usefulness of normal Python debugging techniques.

Version 0, edited 6 years ago by Ramiro Morales (next)

comment:3 by Carlton Gibson, 6 years ago

Resolution: wontfix
Status: assignedclosed

I have to agree 100% with Ramiro.

I’m going to close this as wontfix. If a proposal comes up that catches a user programming error here without interfering with legitimate usage then we can review but I don’t think we can consider this an Open Issue’'.

Last edited 6 years ago by Carlton Gibson (previous) (diff)
Note: See TracTickets for help on using tickets.
Back to Top