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



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

settings.py
...
# Мои настройки
LOGIN_URL = '/users/login/'
Когда пользователь, не прошедший проверку, запрашивает страницу, защищенную 
декоратором 
@login_required
, Django отправляет пользователя на URL-адрес, 
определяемый 
LOGIN_URL
в 
settings .py
.
Чтобы протестировать эту возможность, завершите сеанс в любой из своих учетных 
записей и вернитесь на домашнюю страницу. Щелкните на ссылке 
Topics
, которая 
должна направить вас на страницу входа. Выполните вход с любой из своих учет-
ных записей, на домашней странице снова щелкните на ссылке 
Topics
. На этот раз 
вы получите доступ к странице со списком тем.
Ограничение доступа в Learning Log
Django упрощает ограничение доступа к страницам, но вы должны решить, какие 
страницы следует защищать. Лучше сначала подумать, к каким страницам можно 
разрешить неограниченный доступ, а затем ограничить его для всех остальных 
страниц. Снять излишние ограничения несложно, причем это куда менее риско-
ванно, чем оставлять действительно важные страницы без ограничения доступа.
В приложении Learning Log мы оставим неограниченный доступ к домашней 
странице, странице регистрации и странице выхода. Доступ ко всем остальным 
страницам будет ограничен.
Вот как выглядит файл 
learning_logs/views .py
с декораторами 
@login_required
, при-
мененными к каждому представлению, кроме 
index()
:


446
Глава 19 • Учетные записи пользователей
views.py
...
@login_required
def topics(request):
...
@login_required
def topic(request, topic_id):
...
@login_required
def new_topic(request):
...
@login_required
def new_entry(request, topic_id):
...
@login_required
def edit_entry(request, entry_id):
...
Попробуйте обратиться к любой из этих страниц без выполнения входа: вы будете 
перенаправлены обратно на страницу входа. Кроме того, вы не сможете щелкать на 
ссылках на такие страницы, как 
new_topic
. Но если ввести URL 
http://localhost:8000/
new_topic/
, вы будете перенаправлены на страницу входа. Ограничьте доступ ко 
всем URL-адресам, связанным с личными данными пользователей.
Связывание данных с конкретными пользователями
Теперь данные, отправленные пользователем, необходимо связать с тем пользо-
вателем, который их отправил. Связь достаточно установить только с данными, 
находящимися на высшем уровне иерархии, а низкоуровневые данные последуют 
за ними автоматически. Например, в приложении Learning Log на высшем уровне 
находятся темы, а каждая запись связывается с некоторой темой. Если каждая тема 
принадлежит конкретному пользователю, мы сможем отследить владельца каждой 
записи в базе данных.
Изменим модель 
Topic
и добавим отношение внешнего ключа к пользователю. 
После этого необходимо провести миграцию базы данных. Наконец, необходимо 
изменить некоторые представления, чтобы в них отображались только данные, 
связанные с текущим пользователем.
Изменение модели Topic
В файле 
models .py
изменяются всего две строки:


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




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

    Басты бет