М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения


УПРАЖНЕНИЯ 19.2. Учетные записи в блоге



Pdf көрінісі
бет323/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   319   320   321   322   323   324   325   326   ...   334
Байланысты:
Изучаем Python

УПРАЖНЕНИЯ
19.2. Учетные записи в блоге:
добавьте систему аутентификации и регистрации в проект 
Blog
, работа над которым началась в упражнении 19.1 (с. 435). Проследите за тем, чтобы 
пользователь, выполнивший вход, видел свое имя где-то на экране, а незарегистрирован-
ные пользователи видели ссылку на страницу регистрации.
Редактирование данных
Пользователь должен иметь возможность вводить данные, принадлежащие только 
ему лично. Мы создадим систему, которая будет определять, какому пользователю 
принадлежат те или иные данные, и будет ограничивать доступ к страницам, чтобы 
пользователь мог работать только с принадлежащими ему данными.
В этом разделе мы изменим модель 
Topic
, чтобы каждая тема принадлежала кон-
кретному пользователю. При этом также автоматически решается проблема с запи-
сями, так как каждая запись принадлежит конкретной теме. Начнем с ограничения 
доступа к страницам.
Ограничение доступа с использованием @login_required
Django позволяет легко ограничить доступ к определенным страницам для поль-
зователей, выполнивших вход, с помощью декоратора 
@login_required

Декоратор
(decorator) представляет собой директиву, размещенную непосредственно перед 
определением функции, применяемую к функции перед ее выполнением и влия-
ющую на поведение кода. Рассмотрим пример.
Ограничение доступа к страницам тем
Каждая тема будет принадлежать пользователю, поэтому только зарегистриро-
ванные пользователи смогут запрашивать страницы тем. Добавьте следующий код 
в 
learning_logs/views .py
:
views.py
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Topic, Entry


Редактирование данных
445
...
@login_required
def topics(request):
"""Выводит все темы."""
...
Сначала импортируется функция 
login_required()
. Мы применяем 
login_
required()
как декоратор для функции представления 
topics()
, для чего перед 
именем 
login_required()
ставится знак 
@
; он сообщает Python, что этот код должен 
выполняться перед кодом 
topics()
.
Код 
login_required()
проверяет, вошел ли пользователь в систему, и Django за-
пускает код 
topics()
только при выполнении этого условия. Если же пользователь 
не выполнил вход, он перенаправляется на страницу входа.
Чтобы перенаправление работало, необходимо внести изменения 
settings .py
и со-
общить Django, где искать страницу входа. Добавьте следующий фрагмент в самый 
конец 
settings .py
:


Достарыңызбен бөлісу:
1   ...   319   320   321   322   323   324   325   326   ...   334




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

    Басты бет