Opened 13 years ago

Closed 11 years ago

#18229 closed New feature (wontfix)

Improving the AJAX Error text version to include the contextual code and variables

Reported by: davehughes05@… Owned by: ANUBHAV JOSHI
Component: Core (Other) Version: dev
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: yes
Easy pickings: no UI/UX: no

Description

The plaintext error responses for AJAX requests in 1.4 drop a lot of the stack trace context that was included in the HTML responses pre-1.4. Tools like the network response 'Preview' viewer in Chrome make it easy to navigate the HTML response to drill down into the richer context it provides. The pull request linked below maintains the 1.4 default but enables the response to be configured to use the original behavior.

https://github.com/django/django/pull/8

Attachments (2)

18229.diff (2.9 KB ) - added by ANUBHAV JOSHI 11 years ago.
out.diff (2.7 KB ) - added by ANUBHAV JOSHI 11 years ago.
Difference in outputs

Download all attachments as: .zip

Change History (20)

comment:1 by davehughes05@…, 13 years ago

Needs documentation: set

comment:2 by Adrian Holovaty, 13 years ago

I agree we should allow this somehow for Chrome, but I'd prefer not to add yet another setting. The barrier to entry for settings is higher. Can you think of another way to solve it?

comment:3 by davehughes05@…, 13 years ago

I can't think of an alternative that allows both behaviors without configuring which one is preferred, short of reading the developer's mind :-)

Expanding the returned plaintext to include contextual code and serialized variables (the way they appear in the HTML error result) would probably solve the issue for me. This information could be presented toward the bottom of the trace so the summarizing information is more prominent.

This would likely involve a more in-depth patch, but wouldn't require adding yet another setting. Is this approach worth pursuing, in your opinion?

comment:4 by Adrian Holovaty, 13 years ago

Dave -- Sure, improving the text version to include the contextual code and variables sounds like the better plan. I agree that information should appear at the bottom, to present the most important stuff first. Have a go at implementing it!

comment:5 by Jannis Leidel, 13 years ago

Triage Stage: UnreviewedAccepted

Marking as accepted as there has apparently been an understanding about the issue already.

comment:6 by Kamu, 12 years ago

Has patch: unset

Removing has patch because the pull request was closed in preference of another implementation.

comment:7 by FunkyBob, 11 years ago

Which other implementation was chosen?

Is there a separate ticket for it?

Should this be closed as a dupe or fixed?

comment:8 by Tim Graham, 11 years ago

Easy pickings: unset
Needs documentation: unset

I think the implementation chosen was "improving the text version to include the contextual code and variables sounds". I don't think it has been implemented yet.

comment:9 by ANUBHAV JOSHI, 11 years ago

I hope/intend to work on this in gsoc.

comment:10 by ANUBHAV JOSHI, 11 years ago

Owner: changed from nobody to ANUBHAV JOSHI
Status: newassigned
Summary: Allow configuration of debug response format for AJAX errorsImproving the AJAX Error text version to include the contextual code and variables
Version: 1.4master

comment:11 by Tim Graham, 11 years ago

As a possible starting point, I've used this middleware before to make it easier to read AJAX exceptions.

comment:12 by ANUBHAV JOSHI, 11 years ago

I have compared the two Templates and have added a small diff based on that.

comment:13 by Tim Graham, 11 years ago

Has patch: set

comment:14 by ANUBHAV JOSHI, 11 years ago

If the changes are good, then I'll open a PR. Also is there a need to update tests here as the text response is not tested that extensively?

comment:15 by Tim Graham, 11 years ago

Patch needs improvement: set

The output of the new version is much more cluttered and one of the new lines exceeds 8600 characters in my test. Please post a sample diff of the output between the old and new versions with your next revision, thanks.

by ANUBHAV JOSHI, 11 years ago

Attachment: 18229.diff added

by ANUBHAV JOSHI, 11 years ago

Attachment: out.diff added

Difference in outputs

comment:16 by Tim Graham, 11 years ago

Maybe sniffing the user agent HttpRequest.META['HTTP_USER_AGENT'] and returning the HTML version for Chrome would be a better solution. Actually Firefox inspector and Firebug can also preview HTML. I wonder if we should consider dropping the plain text version for AJAX requests in light of browser improvements? May need a django-developers thread.

comment:17 by Tim Graham, 11 years ago

Actually I see the fact that some browsers can preview HTML from AJAX requests was already raised in the original thread, so dropping plain text probably isn't an option.

I'm having trouble coming up with a good way to present the context code and variables that doesn't seem cluttered.

@davehughes05, if you still care about this issue do you have any thoughts?

comment:18 by Tim Graham, 11 years ago

Resolution: wontfix
Status: assignedclosed

Closing given lack of follow-up from reporter. If someone feels strongly about this and wants to implement something that isn't too ugly, we'll consider it.

Note: See TracTickets for help on using tickets.
Back to Top