# Stop the Django 5.0 press: Move \`URLField.assume\_scheme\` change from deprecation to hard-cut

**URL:** <https://forum.djangoproject.com/t/stop-the-django-5-0-press-move-urlfield-assume-scheme-change-from-deprecation-to-hard-cut/25652>\
**Category:** Django Internals\
**Created:** [November 25, 2023, 11:52pm UTC](https://forum.djangoproject.com/t/stop-the-django-5-0-press-move-urlfield-assume-scheme-change-from-deprecation-to-hard-cut/25652 "2023-11-25T23:52:44Z")\
**Posts on this page:** 1\
**Showing post:** 23

<div class="post-metadata">

**Author:** ![jsma](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/jsma/32/8071_2.png) [@jsma](https://forum.djangoproject.com/u/jsma)\
**Post date:** [December 9, 2023, 11:27pm UTC](https://forum.djangoproject.com/t/stop-the-django-5-0-press-move-urlfield-assume-scheme-change-from-deprecation-to-hard-cut/25652/23 "2023-12-09T23:27:31Z")

</div>

Firefox, Safari, and Chrome/Edge on my machine all have built-in validation for `<input type="url">` that requires a scheme before allowing users to submit a form.

Why is Django assuming a scheme at all vs doing validation similar to browsers (“Please enter a URL”) to catch incoming data from non-browser sources? When I first saw mention of this change in the release notes, I didn’t realize Django had been assuming “http://” and at first thought all of our forms with URL fields might have been accepting scheme-less URLs this entire time until I actually tested one such form. There isn’t a straightforward way I’m aware of to test `assume_scheme` and the transitional setting in a browser.

---

_[View the full topic](https://forum.djangoproject.com/t/stop-the-django-5-0-press-move-urlfield-assume-scheme-change-from-deprecation-to-hard-cut/25652)._
