LINUX.ORG.RU

Вышел django 1.0

 , ,


0

0

Сегодня вышел первый стабильный релиз веб-фреймворка django, написанного на языке программирования python. Обещается обратная совместимость со всеми последующими релизами 1.*

Возможности новой версии:

  • Переработана админка
  • Улучшена поддержка юникода
  • Переработан код ORM
  • Автоматическое экранирование специальных символов в темплейтах.
  • Встроенная GIS-система
  • Подключаемые хранилища для FileField и ImageField
  • Совместимость с Jython
  • Generic Relations (возможность ссылаться в модели на любой объект в базе данных)
  • Возможность указать ORM при сохранении модели, что нужно делать INSERT или UPDATE
  • Переработанный фреймворк для коментариев
  • Убран старый код (oldforms, form_for_model, form_for_instance, и т. д.)
Скачать -- http://www.djangoproject.com/download...

>>> Release Notes

anonymous

Проверено: svyatogor ()
Ответ на: комментарий от anonymous

>Быстрее в раз дцать в работе. Да и возможностей в python больше чем ruby.

пруфлинк? grails, думаю, сделают по скорости обоих

thevery ★★★★
()
Ответ на: комментарий от thevery

> пруфлинк? grails, думаю, сделают по скорости обоих

Память еще не забудьте. У ruby все очень хреново с copy-on-write, мусоросборщик метит все как грязное и, в итоге, от COW никакой пользы нет.

Нет, я понимаю что лишняя планка дешева, но, скажем, для VPS вопрос остается открыт, да и вообще как-то не труЪ это.

anonymous
()
Ответ на: комментарий от anonymous

>> python

> Спорное преимущество

вовсе нет, если учесть, что в руби нет юникода, он тормозной. и самое главное, если это sdl, то я уж и не знаю, зачем он нужен. надеюсь, никто не будет спорить, что основное назначение dsl - упрощение написания _И_ чтения кода за счет повышения уровня абстакции. а теперь посмотрите на код рельсов...

anonymous
()
Ответ на: комментарий от anonymous

>назначение dsl - упрощение написания _И_ чтения кода за счет повышения уровня абстакции. а теперь посмотрите на код рельсов...

1) Где в жанго ДСЛ? 2) Рельсы хреновые, но не из-за ДСЛ а просто из-за убогой архитектуры ActionPack, так что Merb наше фсио. А с ДСЛ там все отлично, просто вы не знаете руби и вам непонятны некоторые элементарные вещи в руби коде.

anonymous
()
Ответ на: комментарий от anonymous

Ох уж эти школьники? В моде ООП - будут кричать об ООП. В моде DSL - будут кричать про DSL. Завтра им скажут, что в моде АЭП (Эзотерическое Анальное Программирование) - бросятся пропагандировать его.

Ребят, вы для начала бы сходили на LtU, почитали там былинные треды об DSL vs Library, прежде чем в присутствии людей с университетским образованием подскакивать тут с заявлениями космического масштаба и космической же глупости.

anonymous
()
Ответ на: комментарий от anonymous

Дык, рельсы скоро займут нишу ПХП - школьники набигают.

А потом и до нашей джанги доберутся. :/

anonymous
()
Ответ на: комментарий от anonymous

>Модели, Формы

1) Рас

from django.db import models

class Poll(models.Model):
  question = models.CharField(max_length=200)
  pub_date = models.DateTimeField('date published')

class Choice(models.Model):
  poll = models.ForeignKey(Poll)
  choice = models.CharField(max_length=200)
  votes  

2) Двас

class Poll < ActiveRecord::Base
 has_many :choices
end

class Choice < ActiveRecord::Base
  belongs_to :poll
end

Хоть убей, но к DSL ближе belongs_to :poll, чем poll = models.ForeignKey(Poll) - это ваще хрен пойми что и не посвященный не поймет.

Школьники блин..

anonymous
()
Ответ на: комментарий от anonymous

>Ребят, вы для начала бы сходили на LtU, почитали там былинные треды об DSL vs Library, прежде чем в присутствии людей с университетским образованием подскакивать тут с заявлениями космического масштаба и космической же глупости

Ну ты братец загнал:) Люди с _нормальным_ университетским образованием читали по крайней мере SICP, и они знают что у нормальных программистов DSL в моде уже лет 40. Просто сейчас уже все подустали от глобальных и надежных а также гавно-интерпрайзных технологий и DSL потихоньку просачиваеться в массы.

anonymous
()
Ответ на: комментарий от anonymous

> Ну ты братец загнал:) Люди с _нормальным_ университетским образованием читали по крайней мере SICP, и они знают что у нормальных программистов DSL в моде уже лет 40. Просто сейчас уже все подустали от глобальных и надежных а также гавно-интерпрайзных технологий и DSL потихоньку просачиваеться в массы.

Просто очередной всплеск моды, не более.

Люди с _нормальным_ университетским образованием используют то, что удобно в данном конкретном случае, без всякого религиозного фанатизма.

anonymous
()

ох, ну наконец. а то как ни возьмешься его копнуть поглубже, а там все уже переделали..

volh ★★
()
Ответ на: комментарий от anonymous

>чем оно лучше RoR? o_O

code reuse выше. можно написать один раз какой-нибудь движок форума и копировать его везде, где такая функциональность нужна. в РоР сложнее. Вот сейчас подкручиваю для одного проекта плохо интегрированный Beast, и никакой радости не испытываю. Может быть в следующих проектах вместо rails наконец возьму merb, и тогда.. ^_^

Собственно, это все) Я когда-то питал зависть к джанговой админке, и для рельсов полнофункциональной замены так и не написал, то это не так, то это не то. Но как-то за почти три года автоматическая админка мне _ни разу_ не пригодилась, вообще. Да и в джанге она имхо нужна для быстрого прототипирования. Поправьте если неправ ( желательно основываясь на личном опыте )

volh ★★
()
Ответ на: комментарий от anonymous

Что же столько ушлепков-то понабежало?.. Ну нравится вам PHP/ROR, ну и фанатейте до красноты глаз. Что вы здесь-то забыли со своим бредом-то и _НАСТОЯЩИМ_ пионерским образованием, ё-моё? Смортишь в книгу а видишь - х... знает что. Хватит троллить.

anonymous
()
Ответ на: комментарий от anonymous

> Модель User все так же захардкожена и хрен без monkey patching ее переделаешь? С кривейшим костылем User.profile?

Наследуешь модель от contrib.auth.User и пишешь свой auth backend из двух методов. Все, после этого в request.user будут объекты твоего собственного класса.

А можно понаследовать несколько разных моделей и писать что-то вроде:

@login_required(Admin)
def some_admin_method(request):
...

@login_required(Cashier)
def some_cashier_method(request):
...

anonymous
()
Ответ на: комментарий от anonymous

>Люди с _нормальным_ университетским образованием используют то, что удобно в данном конкретном случае, без всякого религиозного фанатизма.

Перечитай и пойми, что в каждом конкретном случае удобнее DSL, не важно за счет чего реализованый - объекты, процедуры, макросы(хард стайл).

anonymous
()
Ответ на: комментарий от anonymous

>А что там дальше?

А дальше модели уже готовык использованию, можешь начинать использовать, например @choices = Poll.find(:first).choices

>Какой-то бессмысленный набор букв. Ничего не понятно.

Ошибаешься мой юный друк:) Как раз таки полностью смысловой набор, ничего лишнего, а вот в жанго куча ненужного. А то что тебе не понятно, это потому что ты руби не знаешь

anonymous
()
Ответ на: комментарий от anonymous

> А дальше модели уже готовык использованию, можешь начинать использовать,

Вот джанговскую модель я могу сразу использовать. Я знаю какие там поля и какого типа и какой может быть доп. функционал. А роровскую нет. Там совсем не ясно что и как.

> мой юный друк:

Завидно?:)

> Как раз таки полностью смысловой набор, ничего лишнего, а вот в жанго куча ненужного.

Да там вообще ничего нет. Для экстрасенсев наверно задумывалось.

> А то что тебе не понятно, это потому что ты руби не знаешь

Иногда думаю что к счастью, а то стал бы таким же завистником и красноглазым фанатом как некоторые. Ах да и ещё на макбук пришлось бы разоряться, а то не приняли бы в секту:)

anonymous
()

Парни, а что такое DSL, в чем его преимущества и где про него понятно написано для людей не любящих университетские заморочки?

anonymous
()
Ответ на: комментарий от anonymous

>Вот джанговскую модель я могу сразу использовать. Я знаю какие там поля и какого типа и какой может быть доп. функционал. А роровскую нет. Там совсем не ясно что и как.

Устрою маленький лиебез:)

Вообще работа там начинаеться примерно так:

> script/generate model poll title:string body:text
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/poll.rb
      create  test/unit/poll_test.rb
      create  test/fixtures/polls.yml
      create  db/migrate
      create  db/migrate/20080905094142_create_polls.rb
> script/generate model choice body:string
      exists  app/models/
      exists  test/unit/
      exists  test/fixtures/
      create  app/models/choice.rb
      create  test/unit/choice_test.rb
      create  test/fixtures/choices.yml
      exists  db/migrate
      create  db/migrate/20080905094159_create_choices.rb

Далее происходит миграция (используються файлики из папки  db/migrate/, в них еще можно вписать что требуеться) :
> rake db:migrate
(in /home/dborovikov/polls)
== 20080905094142 CreatePolls: migrating ======================================
-- create_table(:polls)
   -> 0.1150s
== 20080905094142 CreatePolls: migrated (0.1153s) =============================

== 20080905094159 CreateChoices: migrating ====================================
-- create_table(:choices)
   -> 0.0728s
== 20080905094159 CreateChoices: migrated (0.0731s) ===========================

Всегда есть свежий слепок БД - файлик schema.rb, вот его примерное содержимое:

ActiveRecord::Schema.define(:version => 20080905094159) do

  create_table "choices", :force => true do |t|
    t.string   "body"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  create_table "polls", :force => true do |t|
    t.string   "title"
    t.text     "body"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end


Его можно использовать как раз если забыл какие у тебя поля в БД. А модели обявляються для того что бы их просто использовать

Так же будут файлики с описанием моделей в app/models/, где остаеться дописать связи между сущностями через belongs_to, has_one, has_many, has_and_belongs_to_many.

>Да там вообще ничего нет. Для экстрасенсев наверно задумывалось.

Не для экстрасенсов, а для тех кто знает соглашения, например, что если ты написал у одной модели belongs_to :other, то в табличке должно быть интовое поле other_id.

>Иногда думаю что к счастью, а то стал бы таким же завистником и красноглазым фанатом как некоторые. 

Подрастешь, поймешь, что чем больше языков знаешь, тем лучше. Потому как учиться на одном языке, все равно что учиться играть на гитаре, разучивая только одну песню. Что касаеться питона - то я писал на нем для Symbian, слабенький такой язычок. Для меня разбалованного Scheme руби поближе будет.

А вообще лично мне ни Rails ни Django не понравились, сыровато это пока все, побаловаться можно а что-то серьезное писать..

anonymous
()
Ответ на: комментарий от anonymous

>Вообще работа там начинаеться примерно так:

Чем оно лучше manage.py?

>Всегда есть свежий слепок БД - файлик schema.rb

Так чем оно лучше models.py?

anonymous
()
Ответ на: комментарий от anonymous

>А вот то что в питоне возможностей больше - в студию!

Unicode, более 2 тыс. библиотек. хватит?

anonymous
()
Ответ на: комментарий от anonymous

> Устрою маленький лиебез:)

Теперь я:

1. Описал модель в models.py 2. Запустил syncdb и получил таблички в базе.

Всё. И вы хотите сказать, что вся эта мышиная возня в RoR нагляднее? Вы хотите сказать, что размазать модель данных приложения по кучи файлов - это нагляднее и лучше? Какие-то соглашения запомнить - это тоже нагляднее? "Явно лучше чем неявно"

Потом. Я зохотель обновить модель - добавил/удалил поля, запустил evolution и база у меня синхронизирована. Я зотел миграции - установил South и у меня RoR like миграции.

Да я вообще могу не знать что у меня какая-то база-шмаза где-то. Я просто пользуюсь моделью.

Не захотел ничего это и не парюсь тогда. А в РоР уже на первом этапе впопуфакинг начинается. Ужас.

anonymous
()
Ответ на: комментарий от anonymous

>А вообще лично мне ни Rails ни Django не понравились, сыровато это >пока все, побаловаться можно а что-то серьезное писать..

Приведу для начала пару примеров:

1. Google использует Django в Google Apps. 2. Yandex уже больше года использует Django в своих сервисах, к примеру, kuda.yandex.ru и rasp.yandex.ru

Еще раз хочу напомнить интересующимся: вы можете просмотреть внушительный список сайтов (хотя, в большинстве своем, это скорее приложения и сервисы, чем "просто" сайты...) на www.djangosites.org

P.S. чтобы что-то серьезное писать, нужно чтобы руки росли из НУЖНОГО места + УМЕТЬ это "что-то серьезное" делать, а не словами бросаться. Пионеры, блин.

anonymous
()
Ответ на: комментарий от anonymous

>1. Описал модель в models.py 2. Запустил syncdb и получил таблички в базе.

в РоР тоже самое, только вместо одного models.py каждая модель по умолчанию в отдельном файле. так удобнее, когда приложение вырастает до нескольких десятков моделей. хотя никто не запрещает пихать все в одну кучу, как в джанге, ага.

>Вы хотите сказать, что размазать модель данных приложения по кучи файлов - это нагляднее и лучше?

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

>Да я вообще могу не знать что у меня какая-то база-шмаза где-то. Я просто пользуюсь моделью.

это аналогично для всех фреймворков использующих ORM.

P.S. Если ну оооочень хочется чтобы описание полей модели было в самой модели, можно просто взять другой ORM, для руби это DataMapper, к примеру. Там все именно так, и автомиграции, и все описание модели в одном файле, и "более наглядный" стиль использования.

volh ★★
()
Ответ на: комментарий от anonymous

>Приведу для начала пару примеров:

>1. Google использует Django в Google Apps. 2. Yandex уже больше года использует Django в своих сервисах, к примеру, kuda.yandex.ru и rasp.yandex.ru

детский сад какой-то. приведите примеры _популярных_ ресурсов, вроде : scribd.com, justin.tv, hulu.com, yellowpages.com, twitter.com

Я знаю только pownce, клон твиттера, и пару локальных интернет-СМИ со средней нагрузкой. а еще?

volh ★★
()
Ответ на: комментарий от volh

> приведите примеры _популярных_ ресурсов

Даже не догадывался, что yandex и google - непопулярные ресрсы... Улыбнуло.

> вроде : scribd.com, justin.tv, hulu.com...

Это вообще что? Сколько человек из ста (сриди хотя бы ваших же знакомых) скажет, что ими пользуется или *ХОТЯ БЫ* о них слышал...

В очередной раз процитирую самого себя:

> Еще раз хочу напомнить интересующимся: вы можете просмотреть внушительный список сайтов (хотя, в большинстве своем, это скорее приложения и сервисы, чем "просто" сайты...) на www.djangosites.org

Пара сайтов "на вскидку":

http://revver.com/, http://www.curse.com/, http://pownce.com/, http://www.tabblo.com/studio

Так что спорить до потери сознания нет смысла - кто ищет, тот сам зайдет и найдет. Фанаты же так и будут биться лбом об стену - им ничего доказывать и не надо.

> детский сад какой-то.

Нет, это не детский сад. Это все те же фанаты, пионеры и тролли...

anonymous
()
Ответ на: комментарий от anonymous

>Даже не догадывался, что yandex и google - непопулярные ресрсы... Улыбнуло.

поисковики гугл и яндекс - да. а тот же kuda.yandex.ru - нет. зачем показывать себя неумным?

>Это вообще что? Сколько человек из ста (сриди хотя бы ваших же знакомых) скажет, что ими пользуется или *ХОТЯ БЫ* о них слышал...

ну зачем же вы обрезали?) о твиттере слышали ВСЕ, пользуются им довольно многие. со scribd тоже самое. другие сервисы из списка вполне популярны в САСШ. а вот из вашего списка - как раз наоборот.

>Нет, это не детский сад. Это все те же фанаты, пионеры и тролли...

Полностью согласен. Вы начали делать распальцовки о пионерах и умении делать СЕРЬЕЗНЫЕ(тм) вещи. Я наглядно показал, что вы заблуждаетесь. Удачи.

volh ★★
()
Ответ на: комментарий от volh

> ну зачем же вы обрезали?)

Без злого умысла, поверьте.

> другие сервисы из списка вполне популярны в САСШ. а вот из вашего списка - как раз наоборот.

Данные у вас насчет популярности вашего и *НЕСЕРЬЕЗНОСТИ*(тм) моего списка видимо из одного и того же проверенного источника, я так полагаю? ))

> поисковики гугл и яндекс - да. а тот же kuda.yandex.ru - нет. зачем показывать себя неумным?

Смысл моего примера был в совершенно другом: очень странно, что такие солидные игроки вообще обратили свой взор на такое г. как Django, верно? ))) Неверно, хочу вас заверить. Я очень раздосадован, что показал себя перед вами в нелучшем свете. Посыпаю голову пеплом... )))

Насколько я помню разговор/спор/"базар-вокзал" шел о ПРИНЦИПИАЛЬНОЙ возможности и удобстве реализации серьёзных веб-сервисов на основе так ненавистного вам Django. Так вот, приемры я привел. Сервисы вполне серьезные и качественно исполненные, для тех, естественно, кто понимает толк в сложностях проектирования и реализации проектов такого масштаба. Я так полагаю, за вашими плечами стоит *СЕРЬЕЗНЫЙ* опыт такого рода (и софтверный гигант не меньше мелгкомягких, раз применение Django yandex'ом и google'ом для вас не служит достаточно авторитетным мнением... Да и правда, что они там понимают в проектировании и создании веб-приложений, и вИдении бизнеса? Годовой оборот всего-то $167 млн. у первого и в 100 раз больший у второго - мелгкие рыбешки...)

Дальнейшое литье воды по этому поводу бессмысленно, IMHO. Каждый останется при своем мнении. А вот умные люди сделают необходимые выводы сами - благо, не впервой...

anonymous
()
Ответ на: комментарий от anonymous

"Явно лучше чем неявно" . Как надоели необразованные питонисты... А еще и не знают откуда их замечательный жанго взялся - все началось с РоРа, котрый в свою очередь сказав fuck you утверждению "Явно лучше чем неявно" дал начало клану фреймворков быстрой разработки. Cреди них django, cakephp, monorail (который я так понимаю щас вылился в aps .net mvc, поддерживаемый самими MS). Нравиться явное - быдло-жаву в руки, там все явно в xml-х конфигах указывать придеться.

Так что ваши выкидки по поводу телепатства и прочего - детский лепет, а джанго это исковерканая интерпретация идей заложенных в роре, да жанго не плохой в целом, но не надо его боготворить, приводя в пример яндекс (где жанго используют для прототипироваия и мелких побочных проектов) и гугл (который использует его видимо для того же самого). Кстати насчет twtter, да он рельсовый, но у них там половина самопальная, так что это скорее плохой пример и показатель сырости рельсов.

anonymous
()
Ответ на: комментарий от anonymous

> "Явно лучше чем неявно" . Как надоели необразованные питонисты...

lol Да вы похоже сами, батенька, не очень-то и разбираетесь в этих понятиях... ;)

anonymous
()
Ответ на: комментарий от anonymous

>lol Да вы похоже сами, батенька, не очень-то и разбираетесь в этих понятиях... ;)

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

anonymous
()
Ответ на: комментарий от anonymous

> А еще и не знают откуда их замечательный жанго взялся - все началось с РоРа, котрый в свою очередь сказав fuck you утверждению "Явно лучше чем неявно" дал начало клану фреймворков быстрой разработки.

Ах вот чем занимаются рористы во время сеансов впопуфакинга друг друга - они рассказывают небылицы "откуда есть пошла быстрая веб-разработка". Недоразвитые. Они даже понять не могут то джанга зародилась раньше рельс. И что в ней заложены концепции, которые другие в том числе и рельсы тырят и по сей день.

> но не надо его боготворить, приводя в пример яндекс (где жанго используют для прототипироваия и мелких побочных проектов) и гугл (который использует его видимо для того же самого).

Так на рор они даже и не смотрят, потому что - "не работает". Они хотят иметь сервис, который будет отдавать что-то осмысленное, а не `http 500`

anonymous
()
Ответ на: комментарий от anonymous

>Недоразвитые. Они даже понять не могут то джанга зародилась раньше рельс. И что в ней заложены концепции, которые другие в том числе и рельсы тырят и по сей день.

Пруфлинки в студию! Я пока нашел вот что:

"Ruby on Rails был создан Дэвидом Хэйнемеером Ханссоном (англ. David Heinemeier Hansson) на основе его работы над средством управления проектами Basecamp и выпущен в июле 2004 года."

"Изначально был создан для управления несколькими новостными сайтами World Company (Лоуренс, штат Канзас, США) и выпущен под лицензией BSD в июле 2005."

>Так на рор они даже и не смотрят, потому что - "не работает". Они хотят иметь сервис, который будет отдавать что-то осмысленное, а не `http 500`

РоР для мелочевки, все равно что стрельба из пушки по воробьям + инертность мышления толпы и нежелание изучать более редкие, но все же более последовательные языки. Хотя для не мелочевки РоР тоже не годиться.. В общем в топку его, я его наелся уже и смотрю в сторону Merb, ибо рельса помрет, а руби останеться.

anonymous
()
Ответ на: комментарий от anonymous

> Пруфлинки в студию! Я пока нашел вот что:

> "Ruby on Rails был создан Дэвидом Хэйнемеером Ханссоном (англ. David Heinemeier Hansson) на основе его работы над средством управления проектами Basecamp и выпущен в июле 2004 года."

> "Изначально был создан для управления несколькими новостными сайтами World Company (Лоуренс, штат Канзас, США) и выпущен под лицензией BSD в июле 2005."

Вообще-то, работа как над RoR (точнее попытка реализации на PHP, от которой быстро отказались), так и Джанго (как это ни удивительно, но там тоже все началось с отказа от PHP, однако фреймворк с самого начала проектировался под Python) была начата в 2003-м году.

P.S. Подробную информацию следует искать не в ru.wikipedia.org, а в более информативных местах... ;)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.