Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
7d6c418
Removed reqs from root
artrey Apr 24, 2021
c437d1d
Renamed 01
artrey Apr 24, 2021
c0a0e58
Updated readme
artrey Apr 24, 2021
7eaef92
Updated first block
artrey Apr 24, 2021
dc7a930
Updated 1.2
artrey Apr 24, 2021
dd38949
Fixed title
artrey Apr 24, 2021
b2bd502
Renamed block 2
artrey Apr 24, 2021
0e24db7
Removed additional task
artrey Apr 24, 2021
7728ca7
Updated hw 2.1
artrey May 4, 2021
c187551
Fixed 2nd task in hw 2.1
artrey May 4, 2021
9cf0cf0
Removed unused task in hw 2.2
artrey May 4, 2021
2d93f7f
Updated task 1 in hw 2.2
artrey May 4, 2021
b3b50b0
Fixed task2 in hw 2.2
artrey May 4, 2021
4ddc121
Updated hw 3.1
artrey May 7, 2021
f714684
Added precode for hw 3.2
artrey May 8, 2021
1b8511c
Added description for hw 3.2
artrey May 8, 2021
b77d7b0
Fixed Readme
artrey May 8, 2021
fe8ee9e
Renamed hw 3.4
artrey May 8, 2021
8d97ccf
Updated hw 3.3
artrey May 8, 2021
0310f2c
Fixed readme
artrey May 8, 2021
666fb7a
Removed old hws
artrey May 8, 2021
adde747
Update README.md
sashalisina Jun 6, 2021
efad1be
Fixed deps
artrey Aug 1, 2021
9e0f585
Fixed template dirs
artrey Aug 1, 2021
b0d114c
Fixed csv
artrey Aug 1, 2021
a56b3cf
Update README.md
artrey Oct 23, 2021
52eab2c
Update README.md
artrey Oct 23, 2021
148fc50
Update README.md
artrey Oct 23, 2021
12c8487
Added new hw for 3.1
artrey Oct 23, 2021
9730a33
Removed old hw
artrey Oct 23, 2021
6f56f69
Update README.md
artrey Oct 23, 2021
56837a3
Update README.md
artrey Oct 23, 2021
ade47ff
Update README.md
Roman2517 Dec 7, 2021
be3b79c
Update README.md
Roman2517 Dec 7, 2021
2cac8d8
Update README.md
Roman2517 Dec 7, 2021
d5f4232
Update README.md
Roman2517 Dec 7, 2021
c47ef24
Update README.md
Roman2517 Dec 7, 2021
9641eba
Update README.md
Roman2517 Dec 7, 2021
7a6f018
Update README.md
Roman2517 Dec 7, 2021
5cbec9a
Update README.md
Roman2517 Dec 7, 2021
e1c0cab
Update README.md
artrey Dec 7, 2021
669c3c5
Update README.md
artrey Dec 7, 2021
d3fb718
Update README.md
artrey Dec 13, 2021
8cc3372
Update README.md
artrey Dec 24, 2021
55ef4a0
Update HOW_TO_WORK.md
artrey Feb 11, 2022
2e7cfae
Update README.md
artrey Feb 23, 2022
43771d9
Update settings.py
artrey Feb 23, 2022
adce1b5
Update README.md
artrey Feb 27, 2022
2ac3f99
Update README.md
artrey Feb 27, 2022
f6e1b51
Update HOW_TO_WORK.md
artrey Mar 14, 2022
7d335e2
Update requirements.txt
artrey Mar 29, 2022
3dfe1dc
Update README.md
artrey Apr 6, 2022
503bd48
Update settings.py
artrey Apr 22, 2022
41669b9
Update settings.py
artrey May 17, 2022
a09b49a
Update README.md
artrey Jul 4, 2022
b98c23d
Update HOW_TO_WORK.md
artrey Aug 8, 2022
104100a
Update README.md
artrey Aug 9, 2022
4540e87
Update README.md
artrey Aug 22, 2022
bb5fddb
Update README.md
artrey Oct 24, 2022
8f5cd83
Update converters.py
artrey Nov 7, 2022
d85ff59
Update HOW_TO_WORK.md
eshmargunov Jan 12, 2023
4e874cb
Update HOW_TO_WORK.md
EleShvili Feb 23, 2023
3cec0cf
Update README.md
EleShvili Feb 23, 2023
7ac27cf
Update README.md
EleShvili Feb 23, 2023
f2b3f10
Update README.md
EleShvili Feb 23, 2023
b6dde38
Update README.md
EleShvili Feb 23, 2023
01c498e
Update README.md
EleShvili Feb 23, 2023
80f911c
Update README.md
EleShvili Feb 23, 2023
cf2a6b7
Update README.md
EleShvili Feb 23, 2023
c80ebc5
Update README.md
EleShvili Feb 24, 2023
c1bb0b3
Update README.md
EleShvili Feb 24, 2023
585f0b7
Update README.md
EleShvili Feb 24, 2023
4a1c09c
Update README.md
EleShvili Feb 24, 2023
572e0ee
Update README.md
EleShvili Feb 24, 2023
e9e69d6
Update README.md
EleShvili Feb 24, 2023
9a8a153
Update README.md
EleShvili Feb 24, 2023
03c8ad0
Update README.md
EleShvili Feb 24, 2023
f1d4d0c
Update README.md
EleShvili Feb 24, 2023
67bc7e8
Update README.md
EleShvili Feb 24, 2023
f80c882
Update README.md
EleShvili Feb 24, 2023
71f8e58
Update README.md
EleShvili Feb 24, 2023
892ec2e
Update README.md
EleShvili Feb 24, 2023
f947b3b
Update README.md
EleShvili Feb 24, 2023
38d06c1
Update README.md
artrey Mar 2, 2023
2a0d405
Update README.md
artrey Jan 29, 2024
c7b7c0e
Update README.md
artrey Jan 29, 2024
8e9a205
Update README.md
artrey Jan 29, 2024
1ba7e1a
Update README.md
artrey May 20, 2024
3f9be3c
Update books.json
artrey May 20, 2024
6f6b449
Update settings.py
begunko Jun 15, 2024
d892135
vivs and urls
begunko Jun 15, 2024
24f22ca
views and urls
begunko Jun 15, 2024
0da5b42
hw 1.2 recipes
begunko Jun 16, 2024
a61a604
1.2 paginator
begunko Jun 16, 2024
855029e
2.1 все изменения
begunko Jul 15, 2024
7a5a3d2
Практика
begunko Jul 18, 2024
85ee05e
3.1
begunko Jul 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 12 additions & 0 deletions 1.1-first-project/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# Знакомство с Django

Перед выполнением **обязательно** ознакомьтесь с информацией о том, **[как работать с репозиторием домашних работ](/HOW_TO_WORK.md)**.

Необходимо выполнить и предоставить на проверку задачу:

1. [Создание проекта](./first_project).

Работа должна соответствовать
принятому [стилю оформления кода](https://github.com/netology-code/codestyle/tree/master/python).

Любые вопросы по решению задач задавайте в чате учебной группы.
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,36 @@

## Задание

Вам дана заготовка с Django проектом. В проект уже добавлено 1 приложение `app`.
Вам дана заготовка с Django-проектом. В проект уже добавлено одно приложение `app`.

Вам необходимо реализовать 3 view функции и настроить для них правильные урлы.
Вам необходимо реализовать три view-функции и настроить для них правильные урлы.

- `/` - домашняя страница, содержит список доступных страниц;
- `current_time/` - показывает текущее время в любом удобном вам формате;
- `workdir/` выводит содержимое [рабочей директории](https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3).
- `/` домашняя страница, содержит список доступных страниц;
- `current_time/` показывает текущее время в любом удобном вам формате;
- `workdir/` выводит содержимое [рабочей директории](https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B8%D0%B9_%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3).

В первую очередь обратите внимание на файл [urls.py](./first_project/urls.py). В нем задаются пути ко view-функциям, которые отвечают по соответствующим запросам.
В первую очередь обратите внимание на файл [urls.py](./first_project/urls.py). В нём задаются пути ко view-функциям, которые отвечают по соответствующим запросам.

Приложение `app` уже добавлено в проект и включено в `INSTALLED_APPS` (обязательно убедитесь в этом, проверив файл с настройками).
Приложение `app` уже добавлено в проект и включено в `INSTALLED_APPS`. Обязательно убедитесь в этом, проверив файл с настройками.

`home_view` использует шаблон для генерации контента страницы. Шаблоны мы еще не изучали, это материал дальнейших лекций. Поэтому ориентируйтесь на подсказки, часть кода уже написано, вам нужно вписать недостающее 🙂.
`home_view` использует шаблон для генерации контента страницы. Шаблоны мы ещё не изучали, это материал дальнейших лекций. Поэтому ориентируйтесь на подсказки, часть кода уже написано, вам нужно вписать недостающее 🙂.

Вам нужно вписать свой код в следующие файлы:

- [urls.py](./first_project/urls.py)
- [views.py](./app/views.py)

В случае возникновения ошибок, не забывайте использовать рекомендации по отладке вашего Django-проекта из лекции.
В случае возникновения ошибок не забывайте использовать рекомендации по отладке вашего Django-проекта из лекции.

## Подсказки

- Для получения списка файлов в рабочей директории вам поможет функция `listdir` https://docs.python.org/3.7/library/os.html#os.listdir;
- Для получения списка файлов в рабочей директории вам поможет функция `listdir` https://docs.python.org/3.11/library/os.html#os.listdir.

- для получения текущего времени используйте модуль `datetime`: https://docs.python.org/3.7/library/datetime.html.
- Для получения текущего времени используйте модуль `datetime`: https://docs.python.org/3.11/library/datetime.html.

## Документация по проекту

Для запуска проекта необходимо:
Для запуска проекта необходимо

Установить зависимости:

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<head>
<meta charset="UTF-8" />
<title>Домашняя страница</title>
</head>
<body>
</head>
<body>
<h1>Выберите раздел</h1>
{% for title, url in pages.items %}
<a href="{{ url }}">{{ title }}</a>
<br>
<a href="{{ url }}">{{ title }}</a>
<br />
{% endfor %}
</body>
</html>
</body>
</html>
Original file line number Diff line number Diff line change
@@ -1,35 +1,36 @@
from django.http import HttpResponse
from django.shortcuts import render, reverse
import datetime
import os


def home_view(request):
template_name = 'app/home.html'
template_name = "app/home.html"
# впишите правильные адреса страниц, используя
# функцию `reverse`
pages = {
'Главная страница': reverse('home'),
'Показать текущее время': '',
'Показать содержимое рабочей директории': ''
"Главная страница": reverse("home"),
"Показать текущее время": reverse("time"),
"Показать содержимое рабочей директории": reverse("workdir"),
}

# context и параметры render менять не нужно
# подбробнее о них мы поговорим на следующих лекциях
context = {
'pages': pages
}
context = {"pages": pages}
return render(request, template_name, context)


def time_view(request):
# обратите внимание – здесь HTML шаблона нет,
# обратите внимание – здесь HTML шаблона нет,
# возвращается просто текст
current_time = None
msg = f'Текущее время: {current_time}'
current_time = datetime.datetime.now()
msg = f"Текущее время: {current_time}"
return HttpResponse(msg)


def workdir_view(request):
# по аналогии с `time_view`, напишите код,
# который возвращает список файлов в рабочей
# который возвращает список файлов в рабочей
# директории
raise NotImplemented
my_dir = os.listdir()
return HttpResponse(my_dir)
122 changes: 122 additions & 0 deletions 1.1-first-project/first_project/first_project/settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
"""
Django settings for first_project project.

Generated by 'django-admin startproject' using Django 2.2.5.

For more information on this file, see
https://docs.djangoproject.com/en/2.2/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/2.2/ref/settings/
"""

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = "bsok4=7c%m0toi-5s^3(l(7*(#&-mrxcbvfxmmh#_v82qfiylb"

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []


# Application definition

INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
# здесь мы подключаем наши приложения
"app",
]

MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = "first_project.urls"

TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [],
"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",
],
},
},
]

WSGI_APPLICATION = "first_project.wsgi.application"


# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases

DATABASES = {
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
}
}


# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
},
{
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
},
{
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
},
{
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
},
]


# Internationalization
# https://docs.djangoproject.com/en/2.2/topics/i18n/

LANGUAGE_CODE = "ru-ru"

TIME_ZONE = "UTC"

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/

STATIC_URL = "/static/"
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,18 @@
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""

from django.contrib import admin
from django.urls import path, include

from app.views import home_view
from app import views


urlpatterns = [
path('', home_view, name='home'),
# Раскомментируйте код, чтобы данные урлы
path("", views.home_view, name="home"),
# Раскомментируйте код, чтобы данные урлы
# обрабатывались Django
# path('current_time/', time_view, name='time'),
# path('workdir/', workdir_view, name='workdir'),
path('admin/', admin.site.urls),
path("current_time/", views.time_view, name="time"),
path("workdir/", views.workdir_view, name="workdir"),
path("admin/", admin.site.urls),
]
File renamed without changes.
1 change: 1 addition & 0 deletions 1.1-first-project/first_project/requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
django
15 changes: 6 additions & 9 deletions databases_2/README.md → 1.2-requests-templates/README.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
Работа с ORM, часть 2
===
# Обработка запросов и шаблоны

Необходимо выполнить и предоставить на проверку следующие задачи:

1. [Связь многие-ко-многим](./m2m-relations/)
2. [Миграции](./orm_migrations)
1. [Рецепты](./recipes).

Дополнительные задания:
## Дополнительные задания:

1. [Работа с базой](./orm_query/)
1. [Пагинация](./pagination).


Присылать на проверку нужно сразу все обязательные задачи. Дополнительные задачи не влияют на получение зачета.
Присылать на проверку нужно сразу все обязательные задачи. Дополнительные задачи не влияют на получение зачёта.

Работы должны соответствовать
принятому [стилю оформления кода](https://github.com/netology-code/codestyle/tree/master/python).

Любые вопросы по решению задач задавайте в чате Slack.
Любые вопросы по решению задач задавайте в чате учебной группы.
29 changes: 29 additions & 0 deletions 1.2-requests-templates/pagination/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Пагинация

## Задание

Реализуйте пагинацию по csv-файлу с [портала открытых данных](https://data.mos.ru/datasets/752), содержащего список остановок наземного общественного транспорта.

Для этого необходимо реализовать функцию отображение `stations.views.bus_stations`, формируя контекст, как показано в примере.

Путь к файлу хранится в настройках `settings.BUS_STATION_CSV`.

Для чтения csv-файла можете использовать [DictReader](https://docs.python.org/3/library/csv.html#csv.DictReader) и учтите, что файл в кодировке `utf-8`.

![Пример результата](./res/result.png)

## Документация по проекту

Для запуска проекта необходимо

Установить зависимости:

```bash
pip install -r requirements.txt
```

Выполнить команду:

```bash
python manage.py runserver
```
Loading