mirror of
https://github.com/django/django.git
synced 2025-10-23 21:59:11 +00:00
Fixed #31361 -- Fixed invalid action="" in admin forms.
The attribute action="" (empty string) on the <form> element is invalid HTML5. The spec (https://html.spec.whatwg.org/#attr-fs-action) says: > The action and formaction content attributes, if specified, must have > a value that is a valid non-empty URL potentially surrounded by > spaces. Emphasis on non-empty. The action attribute is allowed to be omitted, in which case the current URL is used which is the same behavior as now.
This commit is contained in:
committed by
Mariusz Felisiak
parent
b7093860df
commit
3857a08bdb
@@ -5868,21 +5868,19 @@ class AdminKeepChangeListFiltersTests(TestCase):
|
||||
self.get_changelist_filters_querystring(),
|
||||
)
|
||||
|
||||
def get_add_url(self):
|
||||
return '%s?%s' % (
|
||||
reverse('admin:auth_user_add',
|
||||
current_app=self.admin_site.name),
|
||||
self.get_preserved_filters_querystring(),
|
||||
)
|
||||
def get_add_url(self, add_preserved_filters=True):
|
||||
url = reverse('admin:auth_user_add', current_app=self.admin_site.name)
|
||||
if add_preserved_filters:
|
||||
url = '%s?%s' % (url, self.get_preserved_filters_querystring())
|
||||
return url
|
||||
|
||||
def get_change_url(self, user_id=None):
|
||||
def get_change_url(self, user_id=None, add_preserved_filters=True):
|
||||
if user_id is None:
|
||||
user_id = self.get_sample_user_id()
|
||||
return "%s?%s" % (
|
||||
reverse('admin:auth_user_change', args=(user_id,),
|
||||
current_app=self.admin_site.name),
|
||||
self.get_preserved_filters_querystring(),
|
||||
)
|
||||
url = reverse('admin:auth_user_change', args=(user_id,), current_app=self.admin_site.name)
|
||||
if add_preserved_filters:
|
||||
url = '%s?%s' % (url, self.get_preserved_filters_querystring())
|
||||
return url
|
||||
|
||||
def get_history_url(self, user_id=None):
|
||||
if user_id is None:
|
||||
@@ -5965,6 +5963,11 @@ class AdminKeepChangeListFiltersTests(TestCase):
|
||||
self.assertRedirects(response, self.get_add_url())
|
||||
post_data.pop('_addanother')
|
||||
|
||||
def test_change_view_without_preserved_filters(self):
|
||||
response = self.client.get(self.get_change_url(add_preserved_filters=False))
|
||||
# The action attribute is omitted.
|
||||
self.assertContains(response, '<form method="post" id="user_form" novalidate>')
|
||||
|
||||
def test_add_view(self):
|
||||
# Get the `add_view`.
|
||||
response = self.client.get(self.get_add_url())
|
||||
@@ -6003,6 +6006,11 @@ class AdminKeepChangeListFiltersTests(TestCase):
|
||||
self.assertRedirects(response, self.get_add_url())
|
||||
post_data.pop('_addanother')
|
||||
|
||||
def test_add_view_without_preserved_filters(self):
|
||||
response = self.client.get(self.get_add_url(add_preserved_filters=False))
|
||||
# The action attribute is omitted.
|
||||
self.assertContains(response, '<form method="post" id="user_form" novalidate>')
|
||||
|
||||
def test_delete_view(self):
|
||||
# Test redirect on "Delete".
|
||||
response = self.client.post(self.get_delete_url(), {'post': 'yes'})
|
||||
|
||||
Reference in New Issue
Block a user