Книга «Изучаем Python»



Pdf көрінісі
бет259/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   255   256   257   258   259   260   261   262   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )


Глава 19 • Учетные записи пользователей
Попробуйте обратиться к любой из этих страниц без выполнения входа: вы будете пере-
направлены обратно на страницу входа. Кроме того, вы не сможете щелкать на ссылках 
на такие страницы, как 
new_topic
. Но если ввести URL 
http://localhost:8000/new_topic/

вы будете перенаправлены на страницу входа. Ограничьте доступ ко всем URL-адресам
связанным с личными данными пользователей.
Связывание данных с конкретными пользователями
Теперь данные, отправленные пользователем, необходимо связать с тем пользо-
вателем, который их отправил. Связь достаточно установить только с данными, 
находящимися на высшем уровне иерархии, а низкоуровневые данные последуют 
за ними автоматически. Например, в приложении Learning Log на высшем уровне 
находятся темы, а каждая запись связывается с некоторой темой. Если каждая тема 
принадлежит конкретному пользователю, мы сможем отследить владельца каждой 
записи в базе данных.
Изменим модель 
Topic
и добавим отношение внешнего ключа с пользователем. 
После этого необходимо провести миграцию базы данных. Наконец, необходимо 
изменить некоторые представления, чтобы в них отображались только данные, 
связанные с текущим пользователем.
Изменение модели Topic
В файле 
models .py
изменяются всего две строки:
models.py
from django.db import models
from django.contrib.auth.models import User
class Topic(models.Model):
"""Тема, которую изучает пользователь"""
text = models.CharField(max_length=200)
date_added = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User)
def __str__(self):
"""Возвращает строковое представление модели."""
return self.text
class Entry(models.Model):
...
Сначала модель 
User
импортируется из 
django.contrib.auth
. Затем в 
Topic
до-
бавляется поле 
owner
, используемое в отношении внешнего ключа с моделью 
User
.
Идентификация существующих пользователей
При проведении миграции Django модифицирует базу данных, чтобы в ней хра-
нилась связь между каждой темой и пользователем. Для выполнения миграции 
Django необходимо знать, с каким пользователем должна быть связана каждая 
существующая тема. Проще всего связать все существующие темы с одним поль-


Редактирование данных
431
зователем, например суперпользователем. Но для этого сначала необходимо узнать 
идентификатор этого пользователя.
Просмотрим идентификаторы всех пользователей, созданных до настоящего мо-
мента. Запустите сеанс оболочки Django и введите следующие команды:
(venv)learning_log$ 


Достарыңызбен бөлісу:
1   ...   255   256   257   258   259   260   261   262   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет