Хорошо, рассмотрим пару битов Rails «волшебство»: когда вы пишете класс контроллера, его методы имеют доступ к определенным переменным и некоторым другим классам. Но эти переменные и классы не были ни определены, ни импортированы ничем из файла кода Ruby, который вы просматриваете; Rails проделал большую работу за кулисами, чтобы гарантировать, что они просто будут там автоматически. И когда вы возвращаете что-то из метода контроллера, Rails удостоверяется, что результат передается в соответствующий шаблон; вам не нужно писать какой-либо код, чтобы сообщить ему, какой шаблон использовать, где его найти и т. д. и т. д.
Другими словами, как будто эти вещи происходят "магией"; вам не нужно поднимать палец, они просто случаются для вас.
Напротив, когда вы пишете представление Django, вам нужно импортировать или определить все, что вы планируете использовать, и вы должны четко указать, какой шаблон использовать и к каким значениям шаблон должен иметь доступ.
Разработчики Rails считают, что подобная «магия» - хорошая вещь, потому что она облегчает быстрое налаживание работы и не утомляет вас множеством деталей, если вы не хотите добраться до и начать переопределяющие вещи.
Разработчики Django считают, что подобная «магия» - плохая вещь, потому что на самом деле не экономит столько времени (несколько import
утверждений не имеют большого значения в общей схеме вещей) и имеет эффект сокрытия того, что на самом деле происходит, усложняет понимание того, как переопределить что-либо, или затрудняет отладку, если что-то идет не так.
Обе эти позиции, конечно, являются приемлемыми, и в целом кажется, что люди просто естественным образом тяготеют к одному или другому; те, кому нравится «магия», собираются вокруг Rails или фреймворков, которые пытаются эмулировать его, те, кто не собирается вокруг Django или фреймворков, которые пытаются эмулировать его (и, в более широком смысле, эти позиции несколько стереотипны для Ruby и Python разработчики; разработчики Ruby предпочитают делать что-то одно, разработчики Python любят делать что-то другое).
В долгосрочной перспективе это, вероятно, не будет иметь большого значения для фактора, который, как вы говорите, вас интересует, - оплачиваемых часов, - так что пусть ваш разработчик выберет то, с чем ему или ей больше всего комфортно, так как это более может получить полезные результаты для you .