URL-адреси Django
Ми збираємося зробити нашу першу веб-сторінку - домашню сторінку твого блога! Але для початку давай трохи ближче познайомимося з URL-адресами в Django.
Що таке URL-адресу?
URL - це просто адреса в інтернеті. Ти можеш побачити URL кожен раз, коли відвідуєш веб-сайт - він відображається в адресному рядку твого браузера (так, 127.0.0.1:8000 - це URL-адресу! І https://djangogirls.org - теж URL):
Будь-яка сторінка в Інтернеті потребує власного URL-адресу. Таким чином ваше додаток точно знає, що показати користувачеві, який відкриває конкретний URL-адресу. В Django ми використовуємо так званий URLconf (англ. URL configuration, конфігурація URL). URLconf - це набір шаблонів, які Django спробує порівняти з отриманим URL, щоб вибрати правильний метод для відображення (view).
Як URL-адреси працюють в Django?
Давай відкриємо файл mysite / urls.py в нашому редакторі і подивимося, як він виглядає:
mysite / urls.py
"" "Mysite URL Configuration [...]" "" from django.contrib import admin from django.urls import path urlpatterns = [path ( 'admin /', admin.site.urls),]
Як можеш помітити, Django вже дещо розмістив тут для нас.
Рядки, розташовані між потрійними лапками ( '' 'або "" "), називаються docstrings - ти можеш додати їх на початку файлу, класу або методу для опису їх функціональності. Python буде їх ігнорувати при запуску програми.
URL-адресу розділу адміністрування, який ми відвідували в попередньому розділі, вже тут присутній:
mysite / urls.py
path ( 'admin /', admin.site.urls),
Таким чином, будь-якого URL-адресою, що починається з admin /, Django буде знаходити відповідне view (подання). В цьому випадку ми охоплюємо велику кількість різних URL-адрес, які явно не прописані в цьому маленькому файлі - так він стає більш акуратним і легким для читання.
Твій перший URL-адресу в Django!
Прийшов час створити твій перший URL-адресу! Ми хочемо, щоб ' http://127.0.0.1:8000/ 'Повертав домашню сторінку нашого блогу зі списком записів в ньому.
Ми також хочемо зберегти файл mysite / urls.py в максимально акуратному вигляді, так що ми імпортуємо URL-адреси для нашого застосування blog в mysite / urls.py.
Вперед, додай рядок для імпорту blog.urls. Зверни внимение, що тут ми використовуємо функцію include, тому тобі доведеться імпортувати її в першому рядку свого файлу.
Файл mysite / urls.py повинен виглядати наступним чином:
mysite / urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [path ( 'admin /', admin.site.urls), path ( '', include ( 'blog.urls')),]
Django тепер буде перенаправляти всі запити ' http://127.0.0.1:8000/ 'До blog.urls і шукати там подальші інструкції.
blog.urls
Створи новий порожній файл blog / urls.py. Відмінно! Додай в нього такі два рядки:
blog / urls.py
from django.urls import path from. import views
Так ми імпортували функцію path Django і все views (подання) з додатка blog (у нас їх поки немає, але через хвилину вони з'являться!)
Після цього ми можемо додати наш перший URL-шаблон:
blog / urls.py
urlpatterns = [path ( '', views.post_list, name = 'post_list'),]
Як ти можеш помітити, ми зв'язали view під ім'ям post_list з кореневим URL-адресою ( ''). Цей шаблон URL буде відповідати порожньому рядку. Це правильно, тому що для обробників URL в Django ' http://127.0.0.1:8000/ 'Не є частиною URL. Цей шаблон скаже Django, що views.post_list - це правильний напрямок для запиту до твого веб-сайту за адресою ' http://127.0.0.1:8000/ '.
Остання частина name = 'post_list' - це ім'я URL, яке буде використано, щоб ідентифікувати його. Воно може бути таким же, як ім'я уявлення (англ. View), а може і чимось зовсім іншим. Ми будемо використовувати іменовані URL пізніше в проекті, тому важливо вказувати їх імена вже зараз. Ми також повинні спробувати зберегти імена URL-адрес унікальними і легко запам'ятовуються.
Якщо зараз ти спробуєш відкрити сторінку http://127.0.0.1:8000/ в браузері, то побачиш повідомлення про те, що веб-сторінка недоступна. Це сталося через те, що сервер (пам'ятаєш, як ми набирали runserver?) Перестав обробляти запити. Щоб зрозуміти чому, відкрий вікно своєї командного рядка.
У твоїй командному рядку з'явилося повідомлення про помилку, але не турбуйся - воно, насправді, досить корисно. Ти можеш прочитати, що не існує атрибута з ім'ям 'post list' - _no attribute 'post_list'. Ця назва вистави, яку Django намагається знайти і використовувати, але ми ж його ще не створили. В даний момент розділ / admin / теж не буде працювати. Не турбуйся, ми цим займемося.
Якщо хочеш дізнатися більше про Django URLconfs, подивися офіційну документацію: https://docs.djangoproject.com/en/2.0/topics/http/urls/
Що таке URL-адресу?Як URL-адреси працюють в Django?
Що таке URL-адресу?
Як URL-адреси працюють в Django?
Пам'ятаєш, як ми набирали runserver?