Редактирование данных
429
на которой он базируется, и поле, включаемое на форму. Полю
'text'
снова на-
значается
пустая надпись
.
В точке
включается атрибут
widgets
.
Виджет
(widget) представляет собой эле-
мент формы HTML: однострочное или многострочное текстовое поле, раскрываю-
щийся список и т. д. Включая атрибут
widgets
, вы можете переопределить виджеты,
выбранные Django по умолчанию. Приказывая Django использовать элемент
forms.
Textarea
, мы настраиваем виджет ввода для поля
'text'
, чтобы ширина текстовой
области составляла 80 столбцов вместо значения по умолчанию 40. У пользователя
будет достаточно места для создания содержательных записей.
URL-адрес для new_entry
Необходимо включить аргумент
topic_id
в URL-адрес для создания новой записи,
потому что запись должна ассоциироваться с конкретной темой. Вот как выглядит
URL, который мы добавляем в
learning_logs/urls .py
:
urls.py
...
urlpatterns = [
...
# Страница
для добавления новой записи
path('new_entry/
/', views.new_entry, name='new_entry'),
]
Эта схема URL соответствует любому URL-адресу в форме
http://localhost:8000/
new_entry/id/
, где
id
— число, равное идентификатору темы. Код
за-
хватывает числовое значение и сохраняет его в переменной
topic_id
. При запросе
URL-адреса, соответствующего этой схеме, Django передает запрос и идентифика-
тор темы функции представления
new_entry()
.
Функция представления new_entry()
Функция представления
new_entry
очень похожа на функцию добавления новой
темы. Включите следующий код в файл
views .py
:
views.py
from django.shortcuts import render, redirect
from .models import Topic
from .forms import TopicForm, EntryForm
...
def new_entry(request, topic_id):
"""Добавляет новую запись по конкретной теме."""
❶
topic = Topic.objects.get(id=topic_id)