У меня есть другая перспектива ответить на это.
При работе на разных уровнях, например, в приложении MVC, контроллеру нужны службы для вызова бизнес-операций. В таких сценариях контейнер инжекции зависимостей может использоваться для инициализации служб, чтобы исключить исключение NullReferenceException. Это означает, что вам не нужно беспокоиться о проверке нулевого значения и просто вызвать службы с контроллера, как будто они всегда будут доступны (и инициализированы) как одиночный или прототип.
public class MyController
{
private ServiceA serviceA;
private ServiceB serviceB;
public MyController(ServiceA serviceA, ServiceB serviceB)
{
this.serviceA = serviceA;
this.serviceB = serviceB;
}
public void MyMethod()
{
// We don't need to check null because the dependency injection container
// injects it, provided you took care of bootstrapping it.
var someObject = serviceA.DoThis();
}
}
Я посмотрел и еще не нашел что-то для Django, как команда Rails Generate. У Django есть немного другая философия. Это дает вам инструменты, позволяющие делать вещи легко, но на самом деле не делает это за вас (кроме интерфейса администратора). По большому счету, я думаю, что все в порядке. Когда я использую строительные леса для рельсов, я не могу часто сохранять большую часть автогенерированных материалов. Когда я это сделаю, интерфейс администратора django, вероятно, также сработал бы и дал бы мне больше функциональности.
Вместо этого я предлагаю читать через шаг 4 учебника по Django , который вводит общие а затем глава 7 книги Джанго , в которой представлены формы. Вы должны быть терпеливыми в главе 7, потому что авторы думают, что вы хотите узнать мельчайшие детали о трудном пути, прежде чем они научат вас легкому пути. (попробуйте найти страницу для фразы django.forms)
В конце концов, объем работы, которую вы должны делать между рельсами и джанго, эквивалентен и, возможно, чуть меньше с Django. Однако у вас нет одной команды, чтобы автоматически давать вам шаблонный код для использования в качестве основы.
Я нашел это: https://github.com/madhusudancs/django-groundwork
Похоже, это именно то, что вы ищете. Надеюсь, что это поможет.
Таким образом, Django 1.3 все еще не имеет функциональности «эшафот». Нехорошо. Что лучше всего в эшафоте, так это то, что он позволяет разработчику немедленно начать с проекта, не напомнив все синтаксисы «модели», «urls» и «views».
Посмотрите на этот пример, давайте начнем новый проект и app:
$django-admin startproject mysite
$python manage.py startapp blog
, и теперь нам нужно вручную «СТАРТ» все, начиная с почти пустых файлов. НО было бы очень удобно делать это таким образом (как в рельсах)
$python manage.py scaffold app:blog model:Post title:string content:text
Это должно дать нам: models.py
class Post(models.Model):
title = models.CharField
content = models.TextField
views.py
def index(request):
posts = Post.objects.all().order_by('-id')
return render_to_response('blog/index.html', {'posts': posts})
и обновить urls.py каким-то образом ... или нет, это сложнее, но менее необходимо.
Это не должно быть сложно реализовать в будущих выпусках Django. Я сделал бы это, если бы у меня было достаточно знаний и опыта в Django. К сожалению, я не занимаюсь многими проектами Django, и поэтому мне нужна эта функциональность.
Этот объект ближе к рельсовым лесам: https://github.com/modocache/django-generate-scaffold
Я просто использовал команду помощника / управления эшафотом, предоставленную Django Common , и, похоже, установил достойный фрагмент кода шаблона. Варианты ограничены, но достаточно приличные.
Я просмотрел код, и большая часть его выглядит нормально. Мне нужно было немного очистить, как только строительные леса были «установлены»:
import
. Слияние их. url
спецификации тегов шаблонов. Модифицировали их, чтобы отразить новые (1.5) спецификации, т. Е. Включили второй параметр в одинарные кавычки в каждом из созданных html-файлов для каждой из моделей. urls.py
с помощью include
для модуля app.urls
. common.py
, dev.py
и prod.py
для моей настройки. Пришлось добавить приложение вручную в установленные приложения. YMMV. (Редактирует этот список, если я думаю о чем-либо еще)
Говоря об этом, глядя на количество шаблонов, которые мне НЕ нужно писать , Я бы сказал, что это очень хорошая работа!
На данный момент репо кажется довольно ухоженным - последнее совершение было 18 дней назад на момент написания ответа. Я, вероятно, отправлю запрос на получение / подниму вопрос о проблемах, с которыми я столкнулся в их репо, в ближайшее время.
Вы можете проверить django-addview . Он предназначен для выполнения скучных, мирских шагов, необходимых для автоматического добавления нового представления с помощью удобного графического интерфейса ncurses. Что он делает для вас:
Полное раскрытие: я написал это.