Создание трех отдельных классов, которые делают одно и то же, не соответствует философии DRY
Почему бы не создать отдельный класс, который принимает параметр, и использовать этот параметр для получения конкретное c поведение, которое вы хотите?
class ClassName:
def __init__(self, class_number):
self.template_name = 'test' + str(class_number) + '.html'
a = ClassName(1)
b = ClassName(2)
c = ClassName(3)
print(a.template_name)
print(b.template_name)
print(c.template_name)
Возвращает:
test1.html
test2.html
test3.html
Редактировать на основе вашего комментария - вы не можете вызвать as_view()
для экземпляра, но вы можете передайте ему параметр, который класс использует для установки шаблона ... примерно так:
urls.py:
from django.urls import path
from .views import ForumView
urlpatterns = [
path('a', ForumView.as_view(template_name='a')),
path('b', ForumView.as_view(template_name='b')),
path('c', ForumView.as_view(template_name='c')),
]
views.py:
from django.template.response import TemplateResponse
from django.views.generic.base import View
class ForumView(View):
template_name = None
def get(self, request, *args, **kwargs):
return TemplateResponse(request, self.template_name + '.html')
Это загрузит a.html
для запроса к a
url, b.html
для b
url, et c ...