Index: django/views/generic/date_based.py
===================================================================
--- django/views/generic/date_based.py	(wersja 15490)
+++ django/views/generic/date_based.py	(kopia robocza)
@@ -34,7 +34,7 @@
         queryset = queryset.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
     date_list = queryset.dates(date_field, 'year')[::-1]
     if not date_list and not allow_empty:
-        raise Http404("No %s available" % model._meta.verbose_name)
+        raise Http404("No %s available" % model._meta.object_name)
 
     if date_list and num_latest:
         latest = queryset.order_by('-'+date_field)[:num_latest]
@@ -354,7 +354,7 @@
     try:
         obj = queryset.get(**lookup_kwargs)
     except ObjectDoesNotExist:
-        raise Http404("No %s found for" % model._meta.verbose_name)
+        raise Http404("No %s found for" % model._meta.object_name)
     if not template_name:
         template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
     if template_name_field:
Index: django/views/generic/list.py
===================================================================
--- django/views/generic/list.py	(wersja 15490)
+++ django/views/generic/list.py	(kopia robocza)
@@ -76,8 +76,7 @@
         if self.context_object_name:
             return self.context_object_name
         elif hasattr(object_list, 'model'):
-            return smart_str(re.sub('[^a-zA-Z0-9]+', '_',
-                    object_list.model._meta.verbose_name_plural.lower()))
+            return smart_str('%s_list' % object_list.model._meta.object_name.lower())
         else:
             return None
 
Index: django/views/generic/list_detail.py
===================================================================
--- django/views/generic/list_detail.py	(wersja 15490)
+++ django/views/generic/list_detail.py	(kopia robocza)
@@ -131,7 +131,7 @@
     try:
         obj = queryset.get()
     except ObjectDoesNotExist:
-        raise Http404("No %s found matching the query" % (model._meta.verbose_name))
+        raise Http404("No %s found matching the query" % (model._meta.object_name))
     if not template_name:
         template_name = "%s/%s_detail.html" % (model._meta.app_label, model._meta.object_name.lower())
     if template_name_field:
Index: django/views/generic/dates.py
===================================================================
--- django/views/generic/dates.py	(wersja 15490)
+++ django/views/generic/dates.py	(kopia robocza)
@@ -194,7 +194,7 @@
             qs = qs.filter(**{'%s__lte' % date_field: datetime.datetime.now()})
 
         if not allow_empty and not qs:
-            raise Http404(u"No %s available" % unicode(qs.model._meta.verbose_name_plural))
+            raise Http404(u"No %s list available" % unicode(qs.model._meta.object_name))
 
         return qs
 
@@ -208,7 +208,7 @@
 
         date_list = queryset.dates(date_field, date_type)[::-1]
         if date_list is not None and not date_list and not allow_empty:
-            raise Http404(u"No %s available" % unicode(qs.model._meta.verbose_name_plural))
+            raise Http404(u"No %s list available" % unicode(qs.model._meta.object_name))
 
         return date_list
 
@@ -458,8 +458,8 @@
         qs = self.get_queryset()
 
         if not self.get_allow_future() and date > datetime.date.today():
-            raise Http404("Future %s not available because %s.allow_future is False." % (
-                qs.model._meta.verbose_name_plural, self.__class__.__name__)
+            raise Http404("Future %s list is not available because %s.allow_future is False." % (
+                qs.model._meta.object_name, self.__class__.__name__)
             )
 
         # Filter down a queryset from self.queryset using the date from the
Index: django/views/generic/detail.py
===================================================================
--- django/views/generic/detail.py	(wersja 15490)
+++ django/views/generic/detail.py	(kopia robocza)
@@ -48,7 +48,7 @@
             obj = queryset.get()
         except ObjectDoesNotExist:
             raise Http404(u"No %s found matching the query" %
-                          (queryset.model._meta.verbose_name))
+                          (queryset.model._meta.object_name))
         return obj
 
     def get_queryset(self):
@@ -80,8 +80,7 @@
         if self.context_object_name:
             return self.context_object_name
         elif hasattr(obj, '_meta'):
-            return smart_str(re.sub('[^a-zA-Z0-9]+', '_',
-                    obj._meta.verbose_name.lower()))
+            return smart_str(obj._meta.object_name.lower())
         else:
             return None
 
Index: django/views/generic/create_update.py
===================================================================
--- django/views/generic/create_update.py	(wersja 15490)
+++ django/views/generic/create_update.py	(kopia robocza)
@@ -95,7 +95,7 @@
         return model.objects.get(**lookup_kwargs)
     except ObjectDoesNotExist:
         raise Http404("No %s found for %s"
-                      % (model._meta.verbose_name, lookup_kwargs))
+                      % (model._meta.object_name, lookup_kwargs))
 
 def create_object(request, model=None, template_name=None,
         template_loader=loader, extra_context=None, post_save_redirect=None,
Index: tests/regressiontests/generic_views/list.py
===================================================================
--- tests/regressiontests/generic_views/list.py	(wersja 15490)
+++ tests/regressiontests/generic_views/list.py	(kopia robocza)
@@ -19,7 +19,7 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/author_list.html')
         self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))
-        self.assertIs(res.context['authors'], res.context['object_list'])
+        self.assertIs(res.context['author_list'], res.context['object_list'])
         self.assertIsNone(res.context['paginator'])
         self.assertIsNone(res.context['page_obj'])
         self.assertFalse(res.context['is_paginated'])
@@ -30,12 +30,12 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/author_list.html')
         self.assertEqual(len(res.context['object_list']), 30)
-        self.assertIs(res.context['authors'], res.context['object_list'])
+        self.assertIs(res.context['author_list'], res.context['object_list'])
         self.assertTrue(res.context['is_paginated'])
         self.assertEqual(res.context['page_obj'].number, 1)
         self.assertEqual(res.context['paginator'].num_pages, 4)
-        self.assertEqual(res.context['authors'][0].name, 'Author 00')
-        self.assertEqual(list(res.context['authors'])[-1].name, 'Author 29')
+        self.assertEqual(res.context['author_list'][0].name, 'Author 00')
+        self.assertEqual(list(res.context['author_list'])[-1].name, 'Author 29')
 
     def test_paginated_queryset_shortdata(self):
         # Test that short datasets ALSO result in a paginated view.
@@ -43,7 +43,7 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/author_list.html')
         self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))
-        self.assertIs(res.context['authors'], res.context['object_list'])
+        self.assertIs(res.context['author_list'], res.context['object_list'])
         self.assertEqual(res.context['page_obj'].number, 1)
         self.assertEqual(res.context['paginator'].num_pages, 1)
         self.assertTrue(res.context['is_paginated'])
@@ -54,8 +54,8 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/author_list.html')
         self.assertEqual(len(res.context['object_list']), 30)
-        self.assertIs(res.context['authors'], res.context['object_list'])
-        self.assertEqual(res.context['authors'][0].name, 'Author 30')
+        self.assertIs(res.context['author_list'], res.context['object_list'])
+        self.assertEqual(res.context['author_list'][0].name, 'Author 30')
         self.assertEqual(res.context['page_obj'].number, 2)
 
     def test_paginated_get_last_page_by_query_string(self):
@@ -63,8 +63,8 @@
         res = self.client.get('/list/authors/paginated/', {'page': 'last'})
         self.assertEqual(res.status_code, 200)
         self.assertEqual(len(res.context['object_list']), 10)
-        self.assertIs(res.context['authors'], res.context['object_list'])
-        self.assertEqual(res.context['authors'][0].name, 'Author 90')
+        self.assertIs(res.context['author_list'], res.context['object_list'])
+        self.assertEqual(res.context['author_list'][0].name, 'Author 90')
         self.assertEqual(res.context['page_obj'].number, 4)
 
     def test_paginated_get_page_by_urlvar(self):
@@ -73,8 +73,8 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/author_list.html')
         self.assertEqual(len(res.context['object_list']), 30)
-        self.assertIs(res.context['authors'], res.context['object_list'])
-        self.assertEqual(res.context['authors'][0].name, 'Author 60')
+        self.assertIs(res.context['author_list'], res.context['object_list'])
+        self.assertEqual(res.context['author_list'][0].name, 'Author 60')
         self.assertEqual(res.context['page_obj'].number, 3)
 
     def test_paginated_page_out_of_range(self):
@@ -112,7 +112,7 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/list.html')
         self.assertEqual(list(res.context['object_list']), list(Artist.objects.all()))
-        self.assertIs(res.context['professional_artists'], res.context['object_list'])
+        self.assertIs(res.context['artist_list'], res.context['object_list'])
         self.assertIsNone(res.context['paginator'])
         self.assertIsNone(res.context['page_obj'])
         self.assertFalse(res.context['is_paginated'])
@@ -128,14 +128,14 @@
         res = self.client.get('/list/authors/template_name/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))
-        self.assertIs(res.context['authors'], res.context['object_list'])
+        self.assertIs(res.context['author_list'], res.context['object_list'])
         self.assertTemplateUsed(res, 'generic_views/list.html')
 
     def test_template_name_suffix(self):
         res = self.client.get('/list/authors/template_name_suffix/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(list(res.context['object_list']), list(Author.objects.all()))
-        self.assertIs(res.context['authors'], res.context['object_list'])
+        self.assertIs(res.context['author_list'], res.context['object_list'])
         self.assertTemplateUsed(res, 'generic_views/author_objects.html')
 
     def test_context_object_name(self):
Index: tests/regressiontests/generic_views/dates.py
===================================================================
--- tests/regressiontests/generic_views/dates.py	(wersja 15490)
+++ tests/regressiontests/generic_views/dates.py	(kopia robocza)
@@ -92,7 +92,7 @@
         res = self.client.get('/dates/books/2006/make_object_list/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(list(res.context['date_list']), [datetime.datetime(2006, 5, 1)])
-        self.assertEqual(list(res.context['books']), list(Book.objects.filter(pubdate__year=2006)))
+        self.assertEqual(list(res.context['book_list']), list(Book.objects.filter(pubdate__year=2006)))
         self.assertEqual(list(res.context['object_list']), list(Book.objects.filter(pubdate__year=2006)))
         self.assertTemplateUsed(res, 'generic_views/book_archive_year.html')
 
@@ -102,7 +102,7 @@
         res = self.client.get('/dates/books/1999/allow_empty/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(list(res.context['date_list']), [])
-        self.assertEqual(list(res.context['books']), [])
+        self.assertEqual(list(res.context['book_list']), [])
 
     def test_year_view_allow_future(self):
         # Create a new book in the future
@@ -113,7 +113,7 @@
 
         res = self.client.get('/dates/books/%s/allow_empty/' % year)
         self.assertEqual(res.status_code, 200)
-        self.assertEqual(list(res.context['books']), [])
+        self.assertEqual(list(res.context['book_list']), [])
 
         res = self.client.get('/dates/books/%s/allow_future/' % year)
         self.assertEqual(res.status_code, 200)
@@ -132,7 +132,7 @@
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/book_archive_month.html')
         self.assertEqual(list(res.context['date_list']), [datetime.datetime(2008, 10, 1)])
-        self.assertEqual(list(res.context['books']),
+        self.assertEqual(list(res.context['book_list']),
                          list(Book.objects.filter(pubdate=datetime.date(2008, 10, 1))))
         self.assertEqual(res.context['month'], datetime.date(2008, 10, 1))
 
@@ -149,7 +149,7 @@
         res = self.client.get('/dates/books/2000/jan/allow_empty/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(list(res.context['date_list']), [])
-        self.assertEqual(list(res.context['books']), [])
+        self.assertEqual(list(res.context['book_list']), [])
         self.assertEqual(res.context['month'], datetime.date(2000, 1, 1))
 
         # Since it's allow empty, next/prev are allowed to be empty months (#7164)
@@ -175,7 +175,7 @@
         res = self.client.get('/dates/books/%s/allow_future/' % urlbit)
         self.assertEqual(res.status_code, 200)
         self.assertEqual(res.context['date_list'][0].date(), b.pubdate)
-        self.assertEqual(list(res.context['books']), [b])
+        self.assertEqual(list(res.context['book_list']), [b])
         self.assertEqual(res.context['month'], future)
 
         # Since it's allow_future but not allow_empty, next/prev are not
@@ -229,7 +229,7 @@
         res = self.client.get('/dates/books/2008/week/39/')
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/book_archive_week.html')
-        self.assertEqual(res.context['books'][0], Book.objects.get(pubdate=datetime.date(2008, 10, 1)))
+        self.assertEqual(res.context['book_list'][0], Book.objects.get(pubdate=datetime.date(2008, 10, 1)))
         self.assertEqual(res.context['week'], datetime.date(2008, 9, 28))
 
     def test_week_view_allow_empty(self):
@@ -238,7 +238,7 @@
 
         res = self.client.get('/dates/books/2008/week/12/allow_empty/')
         self.assertEqual(res.status_code, 200)
-        self.assertEqual(list(res.context['books']), [])
+        self.assertEqual(list(res.context['book_list']), [])
 
     def test_week_view_allow_future(self):
         future = datetime.date(datetime.date.today().year + 1, 1, 1)
@@ -249,7 +249,7 @@
 
         res = self.client.get('/dates/books/%s/week/1/allow_future/' % future.year)
         self.assertEqual(res.status_code, 200)
-        self.assertEqual(list(res.context['books']), [b])
+        self.assertEqual(list(res.context['book_list']), [b])
 
     def test_week_view_invalid_pattern(self):
         res = self.client.get('/dates/books/2007/week/no_week/')
@@ -273,7 +273,7 @@
         res = self.client.get('/dates/books/2008/oct/01/')
         self.assertEqual(res.status_code, 200)
         self.assertTemplateUsed(res, 'generic_views/book_archive_day.html')
-        self.assertEqual(list(res.context['books']),
+        self.assertEqual(list(res.context['book_list']),
                          list(Book.objects.filter(pubdate=datetime.date(2008, 10, 1))))
         self.assertEqual(res.context['day'], datetime.date(2008, 10, 1))
 
@@ -289,7 +289,7 @@
         # allow_empty = True, empty month
         res = self.client.get('/dates/books/2000/jan/1/allow_empty/')
         self.assertEqual(res.status_code, 200)
-        self.assertEqual(list(res.context['books']), [])
+        self.assertEqual(list(res.context['book_list']), [])
         self.assertEqual(res.context['day'], datetime.date(2000, 1, 1))
 
         # Since it's allow empty, next/prev are allowed to be empty months (#7164)
@@ -314,7 +314,7 @@
         # allow_future = True, valid future month
         res = self.client.get('/dates/books/%s/allow_future/' % urlbit)
         self.assertEqual(res.status_code, 200)
-        self.assertEqual(list(res.context['books']), [b])
+        self.assertEqual(list(res.context['book_list']), [b])
         self.assertEqual(res.context['day'], future)
 
         # allow_future but not allow_empty, next/prev amust be valid
Index: tests/regressiontests/generic_views/detail.py
===================================================================
--- tests/regressiontests/generic_views/detail.py	(wersja 15490)
+++ tests/regressiontests/generic_views/detail.py	(kopia robocza)
@@ -32,7 +32,7 @@
         res = self.client.get('/detail/artist/1/')
         self.assertEqual(res.status_code, 200)
         self.assertEqual(res.context['object'], Artist.objects.get(pk=1))
-        self.assertEqual(res.context['professional_artist'], Artist.objects.get(pk=1))
+        self.assertEqual(res.context['artist'], Artist.objects.get(pk=1))
         self.assertTemplateUsed(res, 'generic_views/artist_detail.html')
 
     def test_template_name(self):
