Как я понял что нужно дать в Джанго, что бы человек понял, точно понял.
Описание
На эту статью меня вдохновил наш парень keysfire (я перевёл, переводится ключи огня, видно Михаил, так зовут парня, думал когда выбирал логин).
Как назовёшь так и поедешь.
Собственно он заметил что очень много времени уделено классу Context, о нём и статья.
Уровень статьи, для какой аудитории. Кто понимает Джанго тот укрепит свои знания. Кто не начала изучать, по крайне мере будет знать на что точно нужно обратить внимание.
Статья
Это текст Михаила, ссылки на его практикум внизу статьи.
Безобидный казалось-бы урок с spb-tut.ru включил в себя 40, почти 40 часов видео Карл... Очень подробно и внимательно разбирается работа с Template, Context, RequestContext. Рассматриваются разные варианты использования. Только в процессе выполнения у меня сохранилось 17 вариантов использования всего этого добра. При этом часть примеров я просто затирал и писал по новому, так что в курсе их гораздо больше. В общей сложности прослушивание и выполнение практики по этим урокам заняло 2 недели. Получилось прослушал треть базового курса c pro365.net. Теперь меня можно будить ночью и я расскажу чем Context отличается от RequestContext, как вывести текущий IP, имя пользователя и как написать свои контекстные процессоры. При этом могу привести с 10 примеров как это все оформить. Пока не знаю, зачем мне все это богатство, т.к. скорее всего после курса я буду писать вывод в 2 строчки:
p = get_object_or_404(PressRelease, id=art2id)
render_to_response('template.html', {'press': p}, context_instance=RequestContext(request))
Но зато теперь я очень хорошо понимаю, как это устроено внутри. Теперь осталось сделать домашнее задание и вывести его на свой сайт прохождения практики
Как я понял что нужно дать в Джанго, что бы человек понял, точно понял.
Да вы первый заметили, что уделено много времени этому вопросу.
Так как далее в Джанго мы не используем Context на прямую, заменяя разными вещами типа
render_to_respоnse, я полагал, что человек разберётся с этим вопросом и потом уже будет представлять
это в голове при использовании вывода, что существенно облегчает понимание.
Спасибо, я не считал, но вы даже подсчитали, цитата
Только в процессе выполнения у меня сохранилось 17 вариантов использования всего этого добра.
Когда я анализировал сложности изучения Джанго, как оказалось, примерно 70% программистов на PHP, бросают Джанго после 2-х недель, так и не поняв и не имея возможности войти в него.
Нужно было найти почему.
После небольших исследований, я понял причины:
1. Вместо программирования люди начинают искать саму модель в Джанго, шаблон, представление контролёр.
Я пробовал написать курсы первые где на пальцах объяснить, как это работает, но потом что это примерно тоже самое, что
младенцу рассказывать как работает двигатель внутреннего сгорания.
Так как в Джанго контролёром является само Джанго.
Поэтому был выбран другой путь.
Трудности вызывали ещё две вещи.
1. Понимание Context, так как в ходе детального изучения человек сам себе отвечает на вопрос, как выводится в представлении,
и система шаблонов, отвечает на вопрос, что будет показано.
Эо тот момент, который ведёт к второй части.
2. Не изучив Context, человека преследуют всю оставшуюсю жизнь с Джанго не понятки с выборкой объектов.
ТО что я сейчас расписал, я точно понимал, что эти тонкости человек заметит позже, хотя упорно их повторял.
Но что бы это произашло изучающий всегда должен держать в голове и понимать что происходит за кулисами.
Это примерно похоже на травинку на которую мы в дестве нанизывали землянику.
Когда есть травинка и мы знаем. что делать, то обязательно мы соберём.
В яндекс про это сказали так.
Что человек либо любит Джанго с первых шагов, либо ненавидит.
И это правда.
Именно на этом месте большинтсво PHP программистов бросает Джанго и возвращается к рутине.
Поэтому то что описано в шаге, который я назвал 1, и была цель связать в голове у человека вещи.
а) Для Джанго имеет значение та её часть. что выводит данные (это функция, которую мы пишем в views.py, разработчики это очень хорошо понимали, поэтому для начала и назвали файлы по особенному, хотя со временем разобравшись люди уже называют их по своему, что более подходит к конкретному приложени. Например при написании плана 3, я назвал файл вывода функций, не views.py, а plan3.py , к этому все приходят. Но разработчики вложили именно эту суть.
Как бы начнём с начала. views.py то есть представление, или функция, которую мы пишем определяет что вывести (но она не определяет как это вывести).
Что отличает Джанго от классической модели
Model-View-Controller — Википедия
Классическая модель, понятная программистам большинства языков, включает в себя связку модель - представление- контроллёр.
В Джанго же получается немного по другому, модель - представление - шаблон - контроллёр.
И причиной понимания или не понимания (после 2-х года изысканий - 2011-2013)
стал конечно же класс Context/
Объяснять человеку как это работает довольно сложно, да он может и забыть.
Поэтому перед собой я поставил задачу, которая неминуемо должна была вести к пониманию принципа.
Здесь тоже я разделил на две задача:
а) дать так, что бы человек писал и видел результат (о тонкостях говорится, не зря вы отметили, что рассмватривали 17 вариантов. (понимание во время просмтора больинство людей называют водой).
б). Я знал, что когда возникнет вопрос с выборкой объектов, то человек уже будет обращать внимание именно на воду и наконец то скажет, боже мой как всё просто.
Наконеу-то добрались и мы, не буду томить.
Основная задача была объяснить как Context связан с views.py (представлени ем) и как то же Context связан с шаблоном.
Тогда становится всё на свои места и Джанго мгновенно понимается.
То есть в представлении в файле views, пишеться что вывести, верно мы просто пишем вывести и всё, а потом при помощи языка шаблонов в самом html файле, вы говорим, как показать пользователям.
что и сделал Михаил
http://practice.keyfire.ru/context/about/ - одна статья.
http://practice.keyfire.ru/context/list/ - много статей.
То есть там в шаблоне вы можем украсить и вывести одну, много, применить логичесике действия. (примервы выше).
И здесь становится всё на свои места. Потому что шаблон как раз таки связан и с представлением (Context) и одновременно с базой данных.
То есть указывая строку, например:
te = Demo.objects.all() # вывести все объекты в данном случае.
Тогда стновится понятно, что контролёр и есть само Джанго.
А место модели куда отведено. А место модели в Джанго - это просто дополнительная библиотека, просто называется она MySQL, в Джанго ничего не завязано
на базе данных как на основном компоненте, это просто как например с ящика весячего взять сахар для чая ( с базы), потом крупу или то что нужно.
Можно сменить базу ( то есть мы можем купить новую кухню, можно купить дополнительно ещё шкафчик, то есть подключить ещё одну базу.
В этом её сила и работае то Джанго с базой сама. нам достаточно знать как записать модели и знать две команды, Джанго создаст модели и удалит.
Работая с Джанго человек не будет знать ни SQL, достаточно знать базу на уровне интерфеса PHPAdmin.
Как проявляется контроллёр, вот мы импортирова строку
from django.template import RequestContext
Всё теперь всё доступно на всём сайте будет, RequestContext внутри Джанго уже расписано что будет сделано.
Ещё это называют магией Джанго.
И так у Джанго написано много библиотек, набирая те или иные команды мы получаем целую череду действий.
нас остаётся в url, прописать где показать на какой странице, иными словами всё сводится к тому. что мы пишем просто в url название функции, которую описали в представлении и ввести
название страницы.
Как вы видите без кода объяснитть довольно сложно,
а с кодом вообще беда, я имею в виду. когда приходит новичок.
А если приходит новичок и только изучает пайтон.
Вот поэтому был найден выход и очень подробно разъяснён Context,
тогда всё стано на свои места.
Человек понимает и видел что у него получается. переходит на spb и дальше делает и тоже получается.
Потом упирается в некое недопонимание.
И там на spb человек встречает уроки, где рекомендцуется опять пройти на pro365.net,
если всё делается по шагам, то человек приходит к пониманию и уже во второго раза обращает внимание на воду (как многие называют , а не на код).
И проваливается фишка.
Теперь для него Джанго в кармане.
Я увидел Михаил, что вы поняли, думаю эта статья поможет вам осознать, что ещё нужно осознать.
Очень вам благодарен за проделанную работу по самообучению.
Вы первый. кто прочсмотрел pro365.net так подробно и главное описал.
Возможно благодаря вашей статье, которая меня вдохновила на объяснения, многие по другому взглянут на своё сообучение.
Спасибо за доверие.
На самом деле всё на портале объясняется подробно и информации много. Просто Context, важен для входа и понимания работы в целом. А классов, библиотек и фреймфорков в Джанго много. После базового понимания и пнаписания первого сайта, что предусматривает программа школы вы будет развиваться и уже не оставите прекрасный мир Django.
Дополнено позже.
пишет keysfire:
Я его на столько переосмыслил, что переделал весь сайт.
Теперь у меня можно легко и просто на сайте добавлять информацию о коде по выполнению Д.З.
Буду наполнять по ходу выполнения практикума.
Посмотрите результат на этих страницах: http://practice.keyfire.ru/info/audio/ http://practice.keyfire.ru/info/video/
На этих страницах появилось 2 закладки:
"Пример" и "Код" - таким образом можно смотреть пример и код примера. Думаю будет полезно новичкам, таким как я.
Информация о модулях хранится в базе данных.
В зависимости от наличия кода вкладки отображаются или нет.
Валерий пишет:
Да,......................................
Представляю, когда вы переосмыслите выборку полей, связи между моделями и вычисление полей.
Спасибо большое за пример мгновенный для ребят.
Ребят, новые, не расстраивайтесь, что у вас не получается так быстро переосмыслить, как у Михаила. Просто нужно болше практики.
Я тоже не такой быстрый, как Михаил и долго это не мог понять.
Михаил практикующий программист, тем более с 1С, а это мелочи, мелочи, мелочи. (но ведь прекрасно, что есть у нас те кому это безумно интересно, польза всем)
Поэтому просто берите код, и курутие его, чтего нибудь добавляйте.
Эта запись для общего нацеливания на будущие действия,
не считать в данный момент учебным материалом.
Михаил, скоро будем рассматривать выборку полей. на будущее закину удочку и нацелю на новое вас и других ребят.
например строка
videos = Video.objects.all()
Должна для вас стать моментом над которым стоит думать постоянно, а нужно ли всё выводить.
videos = Video.objects.all() [0:3] вывести записи с первой по 2 ограничения по срезам на pro365.net второй курс
Или добавить пагинацию, тогда Джанго будет тратить силы, только на выведеные записи, но с возможность потом ещё вывести порцию, это уже заложено в Джанго.
http://djbook.ru/rel1.7/ref/models/querysets.html
Как раз есть возможность подбросить немного нового понимания.
Первое понимание о REST (как я долго не мог понять, зачем он вообще нужен)
Поясню, в мир PY есть раздел Rest Фреймфорк (переводится фреймворе отдых)
Скоро возьмёмся
Например у нас есть страница с фильмами. (описание фильма, картинка, сам фильм).
В этом случае, на сайте не очень будет верно пользоваться только средствами Джанго.
Представьте тысячи пользователей будут тормошить базу и весь цикл, очень хорошо рассказано в статье вытаскивать
http://spb-tut.ru/guest/pages/149/
Как раз тот случай, когда кможно легко объяснить эффективность.
В этом случае нам на помощь придёт Rest, мы изготовим API (кому не понятно, API это доступ к какомоту участку сайта из вне)
Это примерно похоже для новых людей. что бы объяснить, как бы редактор на компе. который отправляет информацию на болг вордпресс, наверное все этим ползовались.
так вот вы создаём API (будет это создание заключаться в доступе к моделям из вне)
И пользователь просто вводит код фильма, описание и всё что нужно.
И на сайте всё мгновенно изменяется.
Только действие за изменение записи, сохранение записи в базе, обновление берёт на себя Rest, по крайне мере, надеюсь уже после этого первого объяснения, вам не придётся лазить по интернет и искать зачем этот rest и как делать действия и не грузить весь механизм Джанго лишней нагрузкой.
Далее если ещё добавить selen (от selenium), то эти записи можно автоматом отправить куда надо и тем самым действительно начать писать золотую кнопку по тиху.
P.S. Теперь вы понимаете почему за точку входа в Джанго был выбран class Context, далее уже идёт нормальное развитие и понимание выборки, вывода. Кстати я не упомянул маленькую деталь. Джанго не знает, что выводит, другими словами Джанго всё равно что выводить, это может быть любой формат. Что само по себе круто.
Код
нет кода.
Рекомендации
Узнать больше в ленте
Twitter
и подписаться на
Ютуб, получать новые видео.