Python Django (урок 4) - введение в представления (views) и шаблоны (templates)

  Рет қаралды 48,751

shadrus

shadrus

Күн бұрын

Поддержать автора www.donational...

Пікірлер: 75
@devops_ru
@devops_ru 4 жыл бұрын
Для тех кто в 2021. url теперь не может быть строкой только именем функции так что urlpatterns = [ url(r'^/1', basic_one) ] basic_one без кавычек
@АлександрСайганов-т5у
@АлександрСайганов-т5у 3 жыл бұрын
Добрый день! Спасибо за уроки! Так и не разобрался что нужно псиать в урлах нового джанги. Есть ли какой-то листинг этих файлов с исправлениями?
@freedombird1035
@freedombird1035 3 жыл бұрын
А зачем эти все символы - r'^/1' ? Я из 2021 и мне джанго подсказывает в коментах писать просто 'admin/' или " " или 'blog/'
@Израильнасвязи
@Израильнасвязи 11 жыл бұрын
Спасибо! Отличная дикция! И много сложной информации объясняете простым и понятным языком. Я не видел еще таких видео.
@ИгорьИващенко-л5и
@ИгорьИващенко-л5и 7 жыл бұрын
эти уроки становится еще более полезным по истечению времени :) только потому что ты делаешь все как у автора, а у тебя появляются ошибки (ввиду того что на данный момент новая версия Django) и ты сам эти ошибки решаешь тем самым качая в себе дисциплину что ли :) спасибо за тутор.
@mikkimouse1366
@mikkimouse1366 4 жыл бұрын
Очень Хороший канал , обалденные объяснения . Автору успехов и не болеть
@MrAlan4ik
@MrAlan4ik 6 жыл бұрын
Для тех кто из 2018 и далее... ;) В файте settings: 'DIRS': [ os.path.join(BASE_DIR, "templates") ], В файле firstapp/urls.py from django.contrib import admin from django.urls import path from django.conf.urls import include urlpatterns = [ path('admin/', admin.site.urls), path('article/', include('article.urls')), ] В файле article/urls.py from django.urls import path from article import views urlpatterns = [ path('1/', views.basic_one), path('2/', views.template_two), path('3/', views.template_three), ] и в views.py def template_two(request): view = 'template_two' t = get_template('myview.html') html = t.render({'name': view}) return HttpResponse(html) так должно все работать.
@qstart6508
@qstart6508 6 жыл бұрын
Спасибо - долго мучился) подскажи, знающий человек, в каком случае на данном примере правильно использовать директорию templates/myview.html, а в каком templates/article/myview.html, в туториалах и так, и так используют, в чем суть?
@kirylvalkovich
@kirylvalkovich 10 жыл бұрын
Спасибо огромное. Продолжай в том же духе.
@ДмитрийКотик-и1р
@ДмитрийКотик-и1р 6 жыл бұрын
Огромное спасибо за урок!. Немного устарело, но основа от версии к версии не меняется. На данный момент версия джанги 2.1 , и в маршрутизации не используется url(...), а используется path(...) или re_path(...), если указываешь строку для регулярного выражения. Это если кому интересно
@winternight4754
@winternight4754 6 жыл бұрын
Во втором способе, который "template_two" В новых версиях Джанго(старше 1.9) необходимо удалить Contex() Строка будет выглядеть так "html = t.render({'name': view})" Версия Джанго 2.2b1 Автору спасибо за уроки !
@azaz9235
@azaz9235 8 жыл бұрын
Спасибо!!! Отличный курс, более понятного изложения материала найти так и не смог)
@miladsharifov3360
@miladsharifov3360 9 жыл бұрын
Очень просто и наглядно !!! но нужно смотрет с скоростью 2 :))
@ДаниилКиктенко
@ДаниилКиктенко 9 жыл бұрын
+milad sharifov Твоя мысль меня спасла!))
@miladsharifov3360
@miladsharifov3360 9 жыл бұрын
+Даниил Киктенко я очень рад )) я уже закончил этот видеокурс - если будут вопросы то смело спрашивай ))
@leviafanux
@leviafanux 9 жыл бұрын
и чтобы не писать абсолютный путь, есть решение намного правильней сделать вот так :) from os.path import join TEMPLATE_DIRS = ( join(BASE_DIR, 'templates'), ) на здоровье господа!
@Schiz2009
@Schiz2009 8 жыл бұрын
Добавлю, что в последней версии Django нельзя импортировать пути в url() - нужно импортировать собственно функцию представления, поэтому придется все же писать их в urls.py папки firstapp: from django.conf.urls import url from django.contrib import admin from article.views import basic_one, template_two, template_three_simple urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^basicview/1', basic_one), url(r'^basicview/2', template_two), url(r'^basicview/3', template_three_simple), ] и т.д. Если есть другой способ - просветите TEMPLATE_DIRS тоже уже не работает, путь пишите в значение по ключу DIRS в переменную TEMPLATES
@АлексейБронштейн-ю7б
@АлексейБронштейн-ю7б 8 жыл бұрын
ПРАВИЛЬНЫЙ ВАРИАНТ СПС, БРО!
@di_503
@di_503 7 жыл бұрын
Класс!!! Считаю это лучшим тутором по джанге на русском языке , различия версий заставляют шевелить мозг и искать решение. Автору спасибо !!!
@alexeykotenko2432
@alexeykotenko2432 7 жыл бұрын
Второй пример немного устарел. Вот как получить template_two: def template_two(request): view = "template_two" html = get_template("вашфайл.html").render({ 'name': view, }) return HttpResponse(html)
@losos6069
@losos6069 7 жыл бұрын
Помог, спасибо!
@ivaniudin1886
@ivaniudin1886 9 жыл бұрын
почему в первом urls.py url(r'^basicview/', include('article.urls')), мы пишем include, а в нашем созданном urls в папке article пишем url без include: url(r'^1/', ('article.views.basic_one')), ??
@reapersixtysix
@reapersixtysix 8 жыл бұрын
А в чем смысл создавать свои пути для шаблонов, если можно просто разместить их папке article/templates?
@ВладБабин-н7ж
@ВладБабин-н7ж 9 жыл бұрын
django 1.8+ добавлять TEMPLATE_DIRS = [ ] НЕ НУЖНО!!! в TEMPLATES уже предусмотрено что мы будем создавать свои шаблоны, и так в TEMPLATES ищите поле : 'DIRS': [ и вот сюда вставляете ваш абсолютный путь (в моем случае '/home/vlad/djangoenv/bin/firstapp/templates') ] все.
@TitovAndrei
@TitovAndrei 9 жыл бұрын
+Влад Бабин Там впереди ещё много несоответствий? Или это всё технические мелочи в разнице между версиями?
@ВладБабин-н7ж
@ВладБабин-н7ж 9 жыл бұрын
+Андрей Титов впереди еще уйма несоответствий!! (я над ними долго сидел....) (и еще, есть проблема в views.py там ф-ция не правильная) так что если вы будете продолжать идти по этим скринкастам то приготовьтесь листать документацию джанго. =)
@Alexei193
@Alexei193 8 жыл бұрын
Какая там ф-ция не правильная? у меня все с первого раза заработало. (не считая TemplateDoesNotExist из-за DIRS)
@maksimvasiunin8179
@maksimvasiunin8179 7 жыл бұрын
Для django 1.8+ можно не задавать путь в настройках. В каталоге с приложением создайте каталог 'templates', внутри которого каталог с названием приложением, в котором будут находится html файлы. Для примера из видео структура будет выглядеть так: article/templates/article/myview.html
@hunterpre
@hunterpre 7 жыл бұрын
У меня django 1.11. В документации сказано, что TEMPLATES - это список из словарей. В нем есть словарь 'DIRS' : [ ]. В квадратных скобках список путей, туда-то и вставляем путь к папке templates.
@DmitrySazhnev-x3z
@DmitrySazhnev-x3z 8 жыл бұрын
а что переменные view делают во всех функциях?
@Afanasi43
@Afanasi43 8 жыл бұрын
Я столкнулся с такой проблемой, делал все по инструкции, этап запуска This is basic_one view, сервер тупо не поднимался, скорее всего это из-за того что у меня версия джанго намного свежее чем у автора. проблему нашел в article/urls.py у автора там urlpatterns = patterns( ' ', url(r'^1/, 'article.views.basic_one') ) в таком виде у меня не работало, я переделал на from article import views urlpatterns = [ url(r'^1/', views.basic_one, name='basic_one'), ] сервер поднялся и все заработало. Может быть это просто и очевидно, но я как новичок 'прикурил' здесь)) возможно кому-то еще поможет
@Alpha-ld4ge
@Alpha-ld4ge 8 жыл бұрын
Спасиб добрый человек. Два часа бился с этой проблемой.) Вот листинг, что будет к концу урока в *article/urls.py* from django.conf.urls import url from article import views urlpatterns = [ url(r'^1/', views.basic_one, name='basic_one'), url(r'^2/', views.template_two, name='template_two'), url(r'^3/', views.template_three_simple, name='template_tree_simple'), ]
@VitalyPrada
@VitalyPrada 8 жыл бұрын
Спасибо) тоже столкнулся с данной проблемой) помогло))
@АлексейБронштейн-ю7б
@АлексейБронштейн-ю7б 8 жыл бұрын
Я один не вижу конца поста**???
@AnatoliK
@AnatoliK 8 жыл бұрын
там есть ссылка/кнопка "Читать дальше"
@МаксимИващенко-ш5д
@МаксимИващенко-ш5д 7 жыл бұрын
сразу видно - будущий программерXD
@somenonameitis
@somenonameitis 8 жыл бұрын
Как решить проблему с patterns? Оно его даже не импортирует! из-за этого все не работает! что делать?
@hunterpre
@hunterpre 7 жыл бұрын
После описания функции templates_two, при запуске браузер выдал ошибку "context должен быть словарем скорее, чем Context. Переписал строку так: html = t.render({'name': view}) Затем перезапустил и в браузере появилась строка "This is template_two view". ;)
@Proff_Preobrazhensky
@Proff_Preobrazhensky 7 жыл бұрын
спасибо!!!)))
@md5alx
@md5alx 9 жыл бұрын
тем у кого вылетает ошибка TemplateDoesNotExist (django 1.8) при работе с шаблонами: в settings.py приложения, если делаете все как в видео, нужно добавить в 'DIRS': ['путь у вашему/templates'],
@aleksandrkurilov2599
@aleksandrkurilov2599 9 жыл бұрын
+Александр Кирилюк Спасибо, ваще помог!
@ЕвгенийЛитвиненко-ф4о
@ЕвгенийЛитвиненко-ф4о 10 жыл бұрын
24:20 Почему бы не использовать render_to_response ?
@ЕвгенийЛитвиненко-ф4о
@ЕвгенийЛитвиненко-ф4о 10 жыл бұрын
а, все, досмотрел до конца вопрос снимается с повестки дня
@ВладимирКузнецов-э6х
@ВладимирКузнецов-э6х 7 жыл бұрын
В Джанго 1.11 версии, у меня конфликтует template_two, просто переделал на temlate_two.
@Pa7lux
@Pa7lux 8 жыл бұрын
Грустно, что уроки устарели. В моей версии джанго файл urls выглядит иначе и попытки повторить код привели к тому, что сервер перестал подниматься
@reapersixtysix
@reapersixtysix 8 жыл бұрын
гуглить теперь так сложно?
@ВладимирКузнецов-э6х
@ВладимирКузнецов-э6х 7 жыл бұрын
для версий Дж 1.11 все три файла вот так вышли firstapp from django.conf.urls import url from django.contrib import admin from article.views import basic_one,temlate_two,temlate_three urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^basicview/1', basic_one), url(r'^basicview/2', temlate_two), url(r'^basicview/3', temlate_three), ] article rom article import views import django.conf.urls.static urlpatterns = [ django.conf.urls.url(r'^1/', views.basic_one, name='basic_one'), django.conf.urls.url(r'^2/', views.temlate_two, name='temlate_two'), django.conf.urls.url(r'^3/', views.temlate_three, name='temlate_three'), ] views from __future__ import unicode_literals from django.http.response import HttpResponse from django.template.loader import get_template from django.shortcuts import render_to_response # Crate your views here. def basic_one(request): view = 'basic_one' html = 'This is %s views' % view return HttpResponse(html) def temlate_two(request): view = 'temlate_two' html = get_template('myview.html').render({'name': view}) return HttpResponse(html) def temlate_three(request): view = 'temlate_three' return render_to_response('myview.html',{'name':view})
@ЕвгенийАнистратов-м3о
@ЕвгенийАнистратов-м3о 7 жыл бұрын
Спасибо большое, помогли разобраться с views.py
@Vokash3
@Vokash3 7 жыл бұрын
Всё работает. Также была проблема с views.py. Спасибо!
@user-ug8qc6tr6b
@user-ug8qc6tr6b 9 жыл бұрын
Этот язык шаблонов, типа {{name}} внутренний язык джанго? или это сторонний язык?
@ТёмаТур
@ТёмаТур 7 жыл бұрын
это язык шаблонов в джанго. пожобные есть и в других фреймворках.
@TitovAndrei
@TitovAndrei 9 жыл бұрын
Зачем нужно использовать два файла *_'urls.py'_*? Разве их нельзя объединить?
@ТёмаТур
@ТёмаТур 7 жыл бұрын
модульность же. в каждой приложиухе свои урлы. а так все в куче будет, как на свалке - это шляпа)
@1smolin
@1smolin 9 жыл бұрын
тем у кого вылетает ошибка TemplateDoesNotExist (django 1.8) при работе с шаблонами: в settings.py приложения, если делаете все как в видео, закомментируйте блок либо вместо создания TEMPLATE_DIRS в TEMPLATES = [{...'DIRS': [указать путь к шаблону]...}]
@webcraftsman4052
@webcraftsman4052 9 жыл бұрын
Смолин Илья Спасибо за инфу )
@soam8175
@soam8175 9 жыл бұрын
Смолин Илья фух, спс, я 2 дня гуглил и нифига пока не додумался комменты почитать =)
@mrtrailer3392
@mrtrailer3392 9 жыл бұрын
Смолин Илья а из-за чего возникает ошибка?
@1smolin
@1smolin 9 жыл бұрын
Alex Freeman Предполагаю, даже более чем уверен, что ошибка возникает из-за переприсвоения. Питон выполняет код по-строчно, т.е. если А = 8, а на след строке А = 10, то в итоге получим, на выходе 10. Тут так же. Мы TEMPLATE_DIRS указали выше, чем TEMPLATES и его значения мы не меняли, в итоге кортеж ("пути к шаблонам") мы перебили [пустым списком]. Если ошибся в выводе, поправте.
@anatolybobunov
@anatolybobunov 9 жыл бұрын
+Смолин Илья Сам как раз копал эту проблему. В Django 1.8 поменяли немного способ объявления Templates. Сижу читаю доку чтобы разобраться, т.к. если закоментировать - работать то работает, но это как то через ж))))) docs.djangoproject.com/en/1.8/ref/templates/upgrading/#the-templates-settings Ниже Александр Кирилюк уже выдал вариант решения ошибки. Но доку почитать для ПОЧЕМУ все равно надо))))
@АртемШикунов-ж3о
@АртемШикунов-ж3о 8 жыл бұрын
4 часа бился, но так не смог понять в чем дело, No module named пишет, все перепробовал, нигде ничего нет. возможно что то с самим питоном, но не может найти функции в view . и не знаю где еще инфу взять....
@alexejferre6753
@alexejferre6753 8 жыл бұрын
from . import views
@PrivetAltair
@PrivetAltair 9 жыл бұрын
чет после Rails как-то слишком долгим и тяжёлым кажется Django
@gryshavoron2331
@gryshavoron2331 11 жыл бұрын
Столкнулся с проблемой. В settings.py я сделал так TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),), и если со вторым вариантом template_two все работает нормально и шаблон отображается, то вот с третьим вариантом, т.е. template_three_simple выдает ошибку NameError at /basicview/3/ global name 'render_to_reponse' is not defined. вот ссылка на отчет dpaste.com/1661978/
@devops_ru
@devops_ru 11 жыл бұрын
такой импорт есть? from django.shortcuts import render_to_response
@gryshavoron2331
@gryshavoron2331 11 жыл бұрын
есть, уже разобрался. оказывается 's' пропустил в render_to_response. Всё равно спасибо. Хорошие уроки.
@EfifiProfifi
@EfifiProfifi 6 жыл бұрын
Слишком громко по клаве и мышке бьёт)
@denkneb
@denkneb 8 жыл бұрын
For Django 1.10 urlpatterns docs.djangoproject.com/en/1.10/topics/http/urls/#url-dispatcher
@saneksuhrin305
@saneksuhrin305 7 жыл бұрын
Кому интересно, эти же уроки прохожу, django 1.11.2 github.com/alexsukhrin/django.git
@Jariarh
@Jariarh 10 жыл бұрын
Немного тормозиш, но в целом пойдет
@sirazhidinovakmatali
@sirazhidinovakmatali 7 жыл бұрын
html = " Будет так "
@VadimFilin
@VadimFilin 8 жыл бұрын
КаталОООООООООООООООООООООг!
@GauchoPro
@GauchoPro 7 жыл бұрын
Сделали сайт на Django: greenclean.ua/ Очень приятная СMS, эмоции положительные!
@ИванМанойленко-н3ъ
@ИванМанойленко-н3ъ 10 жыл бұрын
Временами тупишь, но в общем пойдет.
@putin-chuylo
@putin-chuylo 7 жыл бұрын
TEMPLATES_DIR = моветон, получше будет os.path.join()
Мясо вегана? 🧐 @Whatthefshow
01:01
История одного вокалиста
Рет қаралды 7 МЛН
Try this prank with your friends 😂 @karina-kola
00:18
Andrey Grechka
Рет қаралды 9 МЛН
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
Лучший Гайд по Kafka для Начинающих За 1 Час
1:15:01
Подъем в ледяную гору. Китай против Quattro
15:32
Поднебесный Гараж
Рет қаралды 3 МЛН