Подтвердить что ты не робот

Есть ли подходящие леса для Django? (A la Ruby on Rails)

Есть ли подходящие леса для Django?

Это может быть в недавно выпущенной версии 1.3, но я еще не нашел ее.

4b9b3361

Ответ 1

Я посмотрел и еще не нашел что-то для Django, как команда Rails Generate. У Django есть немного другая философия. Это дает вам инструменты, позволяющие делать вещи легко, но на самом деле не делает это за вас (кроме интерфейса администратора). По большому счету, я думаю, что все в порядке. Когда я использую строительные леса для рельсов, я не могу часто сохранять большую часть автогенерированных материалов. Когда я это сделаю, интерфейс администратора django, вероятно, также сработает и предоставит мне больше возможностей.

Вместо этого я предлагаю прочитать шаг 4 курса Django, в котором представлены общие представления, а затем глава 7 книги Джанго, в которой представлены формы. Вы должны быть терпеливыми в главе 7, потому что авторы думают, что вы хотите узнать мельчайшие детали о трудном пути, прежде чем они научат вас легкому пути. (попробуйте найти страницу для фразы django.forms)

В конце концов, объем работы, которую вы должны делать между рельсами и джанго, эквивалентен и, возможно, немного меньше с Django. Однако у вас нет одной команды, которая автоматически дает вам шаблонный код для использования в качестве основы.

Ответ 2

Таким образом, Django 1.3 все еще не имеет функциональности "scaffold". Нехорошо. Что лучше всего в эшафоте, так это то, что он позволяет разработчику немедленно начать с проекта, не напомнив все синтаксисы "модели", "URL-адреса" и "мнения".

Посмотрите на этот пример, давайте начнем новый проект и приложение:

$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 и поэтому мне нужна эта функциональность.

Ответ 5

Я просто использовал команду помощника/управления scaffold, предоставленную Django Common, и, похоже, она установила приличный кусок кода шаблона. Варианты ограничены, но достаточно приличные.

Я просмотрел код, и большая часть его выглядит нормально. Мне нужно было немного почистить, как только строительные леса были "установлены":

  • Для каждой созданной модели были добавлены отдельные строки import. Слияние их.
  • Шаблоны по-прежнему несли старые (1.4) url спецификации тега шаблона. Модифицировали их, чтобы отразить новые (1.5) спецификации, т.е. Заключили второй параметр в одинарные кавычки в каждый из созданных html файлов для каждой из моделей.
  • Обновлен основной urls.py с помощью include для модуля app.urls.
  • Я использую нестандартную настройку settings.py - три отдельных файла common.py, dev.py и prod.py для моей установки. Пришлось добавить приложение вручную в установленные приложения. YMMV.

(Редактирует этот список, если я думаю о чем-то еще)

Говоря, глядя на количество шаблонов, которые мне НЕ нужно писать, я бы сказал, что это очень хорошая работа!

На данный момент репо кажется довольно ухоженным - последнее совершение было 18 дней назад на момент написания ответа. Я, вероятно, отправлю запрос на получение/подниму вопрос о проблемах, с которыми я столкнулся в их репо, в ближайшее время.

Ответ 6

Вы можете проверить django-addview. Он предназначен для выполнения скучных, мирских шагов, необходимых для автоматического добавления нового представления с помощью удобного графического интерфейса ncurses. Что он делает для вас:

  • Расширение функции CBV или записи
  • Параметры заполнения CBV
  • Создает шаблон в определенном месте
  • Редактирует urls.py для вас
  • Заботится обо всех импортерах

Полное раскрытие: я написал это.