Dear django-users, In an effort ot learn Django, i am writing a blog post, "Simple Django Tutorial <https://joecodeswell.wordpress.com/2016/05/19/simple-django-tutorial/#untested>", to remind myself & possibly others of some Django Basics.
I ALMOST finished when i noticed some strange (to me) behaviour of the `template_name` in a CBV. Here are the relevant CBVs: class SimpleSearchListContactView(ListView): model = Contact template_name = 'contacts/contact_list.html' def get_queryset(self): qs = super(SimpleSearchListContactView, self).get_queryset() return qs.filter(first_name__contains=self.kwargs['fname']) # "first_name" is the first_name field in our Contacts model # "contains" is one of Django's "Field lookups" # "'fname'" is passed in from our url <fname> Regex Named Group class ParametricSearchListContactView(ListView): model = Contact template_name = 'contacts/contact_list.html' def get_queryset(self): qs = super(ParametricSearchListContactView, self).get_queryset() field_lookups_dict = { '%s__%s'%(self.kwargs['field_name'], self.kwargs['match_cmd']): self.kwargs['value'], # for a def of each match_cmd see Field lookups - https://docs.djangoproject.com/en/1.9/ref/models/querysets/#field-lookups } print ("ParametricSearchListContactView") print (ParametricSearchCRUDListContactView.template_name) print (ParametricSearchListContactView.template_name) print (ListView.template_name) return qs.filter(**field_lookups_dict) class SimpleSearchCRUDListContactView(ListView): model = Contact template_name = 'contacts/crudlist.htm' def get_queryset(self): qs = super(SimpleSearchCRUDListContactView, self).get_queryset() return qs.filter(first_name__contains=self.kwargs['fname']) # "first_name" is the first_name field in our Contacts model # "contains" is one of Django's "Field lookups" # "'fname'" is passed in from our url <fname> Regex Named Group class ParametricSearchCRUDListContactView(ListView): model = Contact template_name = 'contacts/crudlist.htm' def get_queryset(self): qs = super(ParametricSearchCRUDListContactView, self).get_queryset() field_lookups_dict = { '%s__%s'%(self.kwargs['field_name'], self.kwargs['match_cmd']): self.kwargs['value'], # for a def of each match_cmd see Field lookups - https://docs.djangoproject.com/en/1.9/ref/models/querysets/#field-lookups } print ("ParametricSearchCRUDListContactView") print (ParametricSearchCRUDListContactView.template_name) print (ParametricSearchListContactView.template_name) print (ListView.template_name) return qs.filter(**field_lookups_dict) The 2nd pair of classes are the *same as* the first pair EXCEPT: template_name = ‘contacts/crudlist.html’ NOT ‘contacts/contact_list.html’ Class names are new in 2 places in each class: “SimpleSearchCRUDListContactView” “ParametricSearchCRUDListContactView” Here are the relevant URLs: url(r'^ssearch/(?P<fname>[\w-]+)/$', contacts.views. SimpleSearchListContactView.as_view(), name='simplesearchlistcontactview', ), url(r '^psearch/(?P<field_name>[\w-]+)/(?P<match_cmd>[\w-]+)/(?P<value>[\w-]+)/$', contacts.views.ParametricSearchListContactView.as_view(), name= 'parametricsearchlistcontactview', ), url(r'^ssearchc/(?P<fname>[\w-]+)/$', contacts.views. SimpleSearchCRUDListContactView.as_view(), name='ssearchc', ), url(r '^psearchc/(?P<field_name>[\w-]+)/(?P<match_cmd>[\w-]+)/(?P<value>[\w-]+)/$' , contacts.views.ParametricSearchCRUDListContactView.as_view(), name= 'psearchc', ), *I EXPECT* the Views with CRUD in their names (CRUD Views) to behave THE SAME AS the others EXCEPT items are listed with read, update & delete links, because that is how `contacts/crudlist.htm` displays them. *THE PROBLEM IS *that the CRUD Views display the items using the Plain Template (contacts/contact_list.html) NOT the CRUD Template ( 'contacts/crudlist.htm') I.E. Navigating to `http://127.0.0.1:8000/contacts/psearchc/last_name/contains/d/` *YIELDS * Plain Contacts - Joe Codeswell j...@j.com - Jayne Mansfield j...@thebomb.com *NOT AS EXPECTED* CRUD Contacts Create <http://127.0.0.1:8000/contacts/create> - Joe Codeswell j...@j.com Read | <http://127.0.0.1:8000/contacts/read/1> Update | <http://127.0.0.1:8000/contacts/update/1> Delete <http://127.0.0.1:8000/contacts/delete/1> - Jayne Mansfield j...@thebomb.com Read | <http://127.0.0.1:8000/contacts/read/3> Update | <http://127.0.0.1:8000/contacts/update/3> Delete <http://127.0.0.1:8000/contacts/delete/3> Also, for the same navigation URL, in the Server Status Window the prints yield [18/Jun/2016 11:16:26] "GET /contacts/psearchc/last_name/contains/d/ HTTP/1.1" 200 218 ParametricSearchCRUDListContactView contacts/crudlist.htm contacts/contact_list.html None I hope someone can tell me what's going on here. Thanks in advance. Love and peace, Joe -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/5cf7a8fd-2415-42d0-bc6b-b042a02e8c7f%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.