Хотя я согласен с ответом Даниэля Роземана, я сочувствую вашему недоумению и думаю, что интерфейс и его параметры можно было бы объяснить лучше.
Интерфейс Django очень привержен идее динамической типизацииили « утка печатает » - например, если она ходит как утка, если она плавает как утка, то назовите ее уткой.Интерфейс Django не требует, чтобы вы передавали строковый тип, он требует, чтобы вы передавали сущность, которая ведет себя как строка.
Внимательно посмотрите в документации, на которую вы ссылались, конкретную формулировку для каждого параметра render()
. запрос - это «запрос объект ». шаблон - это "полное имя ... или последовательность из имен ." словарь - это " словарь значений ...". status - это «код состояния для ответа. По умолчанию 200 » [целое число].
Я добавил акцент на слова, которые намекают на то, какой динамический тип интерфейс ожидает или возвращает. объект означает тип объекта с набором методов. name подразумевает строку.Пример 200 подразумевает, что код состояния является целым числом.
Я думаю, что документация Django была бы более понятной, если бы она была более явной в отношении своего словаря динамических типов, которые он ожидает или возвращает.Он может сказать что-то вроде: « запрос - это объект, реализующий интерфейс объекта запроса», а затем точно определить, какие методы нужно реализовать объекту, чтобы квалифицировать его как этот интерфейс.Документация также может быть явной, а не неявной в таких случаях, как status , где она может буквально сказать «целое число».
Но, за исключением этих предостережений, интерфейс Django спроектирован как «pythonic»,принять утки печатать.Даниэль прав: «Если вы будете настаивать на программировании на Python, как на Java, вам будет трудно».Это может быть хорошее время для прочтения Философии дизайна Джанго и PEP 20 Python - Дзен Питона .Обратите внимание, что ни один из них не упоминает «проверку синтаксиса во время компиляции благодаря строгой типизации» в качестве цели.Тото, я не думаю, что мы больше на Яве.