Документация говорит, что
Аргумент представления является функцией представления или результатом as_view () для представлений на основе классов. Это также может быть django .urls.include ().
И если вы посмотрите на исходный код,
def _path(route, view, kwargs=None, name=None, Pattern=None):
if isinstance(view, (list, tuple)):
# For include(...) processing.
pattern = Pattern(route, is_endpoint=False)
urlconf_module, app_name, namespace = view
return URLResolver(
pattern,
urlconf_module,
kwargs,
app_name=app_name,
namespace=namespace,
)
elif callable(view):
pattern = Pattern(route, name=name, is_endpoint=True)
return URLPattern(pattern, view, kwargs, name)
else:
raise TypeError('view must be a callable or a list/tuple in the case of include().')
вы увидите, что он просто проверяет аргументы вводят и делают разные вещи в зависимости от того, является ли он кортежем или вызываемым.