MCPcopy Index your code
hub / github.com/DiyanKalaydzhiev23/Django-Basics

github.com/DiyanKalaydzhiev23/Django-Basics @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
312 symbols 1,386 edges 307 files 8 documented · 3% updated 4mo ago★ 38
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Django Basics

Other Repos


Theory Tests


Plans

01. Internet and HTTP

  1. Какво е интернет
  2. Една голяма мрежа от устройства
  3. Пример:
    • Ако ние разкачим нашия рутер и го свържем с телефона и лаптопа ни, това е някаква (мини) мрежа от 2 устройства.
    • Ако аз пусна приложение на някакъв порт на лаптопа ми, ще мога да го достъпя на телефона.
    • Ако след това свържем рутера с интернет, то това ще бъде свързване на нашата (мини) мрежа с всички останали мини мрежа, в една голяма мрежа.
  4. Заражда се като научноизследователска дейност през 1969.
  5. Начините, по които се свързваме са чрез:
    • Оптични кабели
    • Медни кабели
    • Телефонни клетки
    • Сателити
  6. Команди за всички индивидуални мрежови интерфейси на нашата машина

    • Mac/Linux: bash ifconfig

    • Windows: bash ipconfig /all

    • Физически интерфейси: en0, en1, en2, en3, en4, en5, en6

    • Виртуални интерфейси: lo0, bridge0, utun0, utun1, utun2, utun3, awdl0
  7. Request/Response - Client/Server

  8. Ние искаме някакъв ресурс и ако имаме достъп го взимаме
  9. Клиента е всяко приложение, което може да достъпи сървър
  10. Сървъра е машината, която може да предоставя ресурси terminal curl https://softuni.bg/

  11. Network Protocol

  12. Стандарт, чрез който могат да комуникират 2 устройства
  13. Правилата, които трябва да бъдат изпълнени, така че съвъра да може да разбере какво иска клиента, и когато върне резултат клиента да може да го разбере.
  14. Често използвани протоколи:

    • HTTP:
    • Използван за зареждане на уеб страници, всяка заявка и отговор са независими.
    • TCP:
    • Гарантира, че данните се предават надеждно и в правилния ред, осигурява връзка преди предаване.
    • FTP:
    • Протокол за прехвърляне на файлове, работи в клиент-сървър модел и поддържа различни режими на трансфер.
    • Често се използва за теглене на резервно копие на база данни, главно поради големия обем на данните.
    • SSH:
    • Осигурява сигурен отдалечен достъп до мрежови устройства, криптирайки комуникацията.
    • SMTP:
    • Използваме, за да изпращаме имейли към имейл провайдъри.
    • IP:
    • Протокол за адресиране и маршрутизация на данни в мрежи, който осигурява изпращането и получаването на пакети между устройства.
  15. Пакети

  16. Когато сървъра и клиента си обменят данни, те ги обменят на пакети
  17. Ако имаме твърде голям обем от данни те ще бъдат разделени на малки части (пакети).
  18. Клиента ще раздроби данните на пакети, когато ги подава на сървъра. Той от своя страна ще ги сглоби и обратното.
  19. Протокола е начина, по който, съръра и клиента разбират как да обработват пакетите.

  20. IP адрес

  21. Уникален идентификатор в локалната мрежа
  22. В една мрежа всички IP-та трябва да са уникални
  23. Поради тази причина свързвайки се с с друга мрежа, можем да имаме друго IP в нея.
  24. Ако ние сме свързали няколко устойства в една мрежа, те могат да излизат под едно IP за външия свят, но вътре в самата мрежа те имат различни IP адреси
  25. What is my IP?

  26. IPv4 vs IPv6

  27. v4 позволява създаането на 4.3 милиарда уникални адреса
    • 32-битови адреси
    • Пример:
    • 192.168.14.20
    • 192.168 е мрежова част
    • 14 е подмрежа (нашата мрежа)
    • 20 е нашето устройство в мрежата
  28. v6 позволява създаването на 3.4×10^38 уникални адреса

    • 128-битови адреси
  29. DNS - Domain Name System

  30. Грижи се да можем да достъпваме сайтове през домейн(име), а не през IP
  31. IP-то се сменя, затова не можем да караме потребителте да го помнят

  32. HTTP

  33. Винаги получаваме резултат
  34. Протокола на интернет
  35. HTTP1/HTTP2 използват TCP/IP под себе си. HTTP3 използва QUIC протокол.
  36. HTTP verb:
    • CREATE
    • POST
    • PUT
    • DELETE
    • ...
  37. Status codes

  38. URL (Uniform Resource Locator)

  39. Подобно на адресите в реалния свят имаме: държава, град, квартал...
  40. http://localhost:8080/demo/html?id=26&lang=en#lecture
  41. http - протокол
  42. localhost - host, domain
  43. 8080 - порт
  44. /demo/html - път
  45. ?id=26&lang=en - query string
  46. lecture - fragment

  47. https://softuni.bg:443 - можем да си спестим порта, защото https се заржда на 443 по подразбиране.
  48. Можем да имаме url-и на кирилица

  49. MIME (Multi-purpose Internet Mail Extensions)

  50. Обяснява типа на данните, които се изпращат и получават

02. Django Introduction

  1. Framework - Работна рамка
  2. Следваме определени правила и структури.
  3. Получаваме готови функции

  4. MVT Pattern

  5. Model View Template

  6. Структура на Django проект

  7. manage.py - entry point-a за работа с Django, с него изпълняваме command-line операции
  8. projectFolder
    • settings.py - съдържа настроките на приложението
    • urls.py - място където дефинираме url-и, които да са достъпни от потребителя
    • asgi.py - setup за асинхронни заявки
    • wsgi.py - setup за синхронни заявки
  9. djangoApp - всеки app се грижи за отделна част от нашия проект

  10. Creation of a django app

  11. Move app to project directory (Optional)
  12. Create urls.py file
  13. Register the djagoApp in settings.py
  14. Register the urls in the project

bash python manage.py runserver

  1. Databases
  2. За Postgres инсталираме psycopg2
  3. Конфигурираме в setting.py
  4. Създаваме база
  5. Създаваме модели в models.py
  6. makemigrations
  7. migrate

  8. Views

  9. Съдържат главната бизнес логика
  10. Function Based View (FBV)
  11. Трябват ни:

    • Функция, която има един или повече параметри и връща отрговор python def index(request): return HttpResponse("Hello world") python HttpResponse("Hello world", headers={ "Content-Type": "application/json", })
  12. urls

  13. Създаваме си променлива с име urlpatterns в app/urls.py
  14. В нея задаваме на какъв път, какво view да се изпълни ```python from .views import index

    urlpatterns = ( path('home/', index), ) - Добавяме си app/urls в project/urls.pypython urlpatterns = (
    path('admin/', admin.site.urls), path('', include('project_name.app_name.urls')),
    ) ```

  15. Admin Panel

  16. Django пакет
  17. Започнат като third-party пакет и в последствие добавен като официален пакет
  18. /admin/ - за да достъпим админ панела
  19. createsuperuser
  20. admin.py - регистрираме моделите, които искаме да могат да се манипулират в админа

9, Django Template Language (DTL) - Като динамичен HTML - Имаме цикли, ифове - Можем да рендерираме наши стойности - {{ }} - интерполация - {% %} - template tags


03. Urls and Views

  1. Какво са url-ите в Django?
  2. Всеки url преставлява път, на който зареждаме дадено view
  3. Django ги проверява последователно за съвпадение

python urlpatterns = [ path('index/', index_view), path('index/', index_view_2) # никога няма да видим index_view_2 ]

  • В основните urls на проекта ни, трябва да включим тези от всяко наше приложение
  • Можем да сложим общ prefix, които да седи пред всеки url на даден app

```python urlpatterns = [ path('admin/', admin.site.urls), path('departments/', include('departments.urls')), ]

```

  • include може да приема списък от paths

  • Динамични url-и

  • Понякога искаме в url-a да динамична стойност (променяща се, примерно id) python path('index/<int:pk> ', index_view),
  • Типове динамични url-и

    • str
    • int
    • slug - string, които не може да има интервали и non-Ascii символи
    • path - "/some/path" - не бихме имали съвпадение в str, защото Django вижда това като отделни пътища
    • uuid
    • re_path
    • Винаги пишем в raw стринг(стринг, които няма escapes)
    • В django 2 всеки път е бил с регулярни изрази python re_path(r'^article/(?P<year>[0-9]{4})/', view) # matches year and saves it in a variable year
  • Views

  • Function Based Views

    • Приемат http заявка и връщат http отговор(или негов наследник)
    • Освен заявката могат да получават други параметри заложени в url-a
  • Response types

  • HttpResponse
    • Обект, който се грижи за това да се сериализира нашият отговор (да се разбие на пакети и тн.)
    • Можем да му подаваме content (съдържание)
    • Можем да му подадем status_code python return HttpResponse(content="Hi my name is", status=201)
  • JsonResponse ```python content = json.dumps({ "name": "Dido", "age": 20 })

    return HttpResponse(content=content, content_type="application/json")

    or

    return JsonResponse(content,) ```

  • Django Shortcuts

  • render
    • Рендерира контекст в html template python return render(request, 'core/index.html', context) # context is optional
  • redirect
    • Пренасочва ни към друг url
    • Може да бъде permanent
    • Когато искаме винаги от тази страница да се пренасочва към друга python redirect('https://softuni.bg') # използваме абсолютен url. защото редиректваме към друго приложение redirect('my_view_name', pk=10) # използваме име на view-то, за по-добра абстракция
  • resolve_url
    • Използва url resolver-a на django, за да намери url отговарящ на view или model (ако в модела има get_absolute_url)
  • get_object_or_404()
  • get_list_or_404() python article = get_object_or_404(Article, pk=article_id)
  • reverse
    • Получава име на url, търси в регистрираните имена и връща url-а с това име
  • reverse_lazy

    • Използва се за конвигурация
    • Зарежда url-а, когато той съществува python # settings.py LOGIN_URL = reverse('index') # throws an error LOGIN_URL = reverse_lazy('index') # throws an error
  • Django Errors

  • raise Http404
  • return HttpResponseNotFound
  • Постигат един и същ резултат
  • Можем да персонализираме 404 страницата като направум темплейт с име 404.html

04. Templates

  1. Django Template Language(DTL)
  2. Използваме, за рендерираме информацията от view-тата
  3. Позволява ни да пишем html, които в зависимост от данните да бъде различен
  4. Единствените езици, които Django поддържа out of the box DTL и Jinja2
  5. Има други алтернативи като Jinja2
  6. Mожем да рендредираме в html, txt, xml и тн.
  7. С него правим Sever Side Rendering(SSR)
  8. Настройките по подразбиране за DTL можем да намерим в settings.py python TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]

  9. Променливи

  10. Попълваме от контекста в {{ }}
  11. Имената на променливите трябва да бъдат snake_case само букви и цифри
  12. Достъпване на методи, пропъртита и индекси става чрез .
  13. {{ my_list.1 }}, {{ person.full_name }}, {{ my_object.items }} python context = { "person": { "name": "Dido" "age": 20, }, "person2": Person(name="Metodi", age="21 " }

  14. Филтри

  15. Използваме, за да преобразуваме нашите данни в темплейта
  16. Използваме със символа |
  17. Някои филтри имат параметри като тях подаваме с :
  18. Някои built-in филтри
    • trucatechars:number - маха последните number chars и ги заменя с ...
    • truncatewords:number
    • join:seprarator - същото като ''.join(separator) в Python
    • date:format - форматира датата по желан от нас начин
    • default:value - какво да се покаже при falsy стойност
    • add:value - добавя към съществуваща стойност
    • capfirst - прави първата буква главна
  19. Линк към всички филтри в Django -> Django Template Filters

  20. Тагове

  21. Цикли, проверки и други built-in действия.
  22. Таговете, които рендерират html имат затварящи тагове, защото html не зачита whitespace
  23. url tag - позволява ни да не използваме hardcoded urls
  24. csrf_token - генерира произволен стринг на бек енда, рендерира го във фронт-енд-а и го сравнява като направим заявка, също запазва cookie

```html <!-- Example of if,

Core symbols most depended-on inside this repo

Shape

Class 186
Function 63
Method 63

Languages

Python100%

Modules by API surface

formsAdvanced/books/forms.py10 symbols
classBasedViewsBasics/common/views.py10 symbols
classBasedViewsAdvanced/common/views.py10 symbols
musicApp/profiles/views.py8 symbols
classBasedViewsAdvanced/travelers/views.py8 symbols
musicApp/albums/views.py7 symbols
formsBasics/books/forms.py7 symbols
formsAdvanced/books/validators.py7 symbols
musicApp/albums/forms.py6 symbols
formsBasics/books/views.py6 symbols
formsBasics/books/models.py6 symbols
formsAdvanced/reviews/views.py6 symbols

For agents

$ claude mcp add Django-Basics \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page