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



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

419
Рис. 19.3.
Каждая запись снабжается ссылкой для редактирования этой записи
регистрации пользователей, чтобы любой желающий мог создать свою учетную 
запись в Learning Log и ввести собственный набор тем и записей.
УПРАЖНЕНИЯ
19-1 . Блог: создайте новый проект Django с именем Blog . Создайте в проекте приложе-
ние с именем blogs и моделью BlogPost . Модель должна содержать такие поля, как title, 
text и date_added . Создайте суперпользователя для проекта и воспользуйтесь администра-
тивным сайтом для создания пары коротких сообщений . Создайте домашнюю страницу, 
на которой выводятся все сообщения в хронологическом порядке .
Создайте одну форму для создания новых сообщений и другую форму для редактирования 
существующих сообщений . Заполните формы и убедитесь в том, что они работают .
Создание учетных записей пользователей
В этом разделе мы создадим систему регистрации и авторизации пользователей, 
чтобы люди могли создать учетную запись, начать и завершать сеанс работы с при-
ложением. Для всей функциональности, относящейся к работе с пользователями, 
будет создано отдельное приложение. Мы также слегка изменим модель 
Topic

чтобы каждая тема была связана с конкретным пользователем.
Приложение users
Начнем с создания нового приложения 
users
командой 
startapp
:
(ll_env)learning_log$ 
python manage.py startapp users
(ll_env)learning_log$ 
ls


420
Глава 19 • Учетные записи пользователей
 
db.sqlite3 learning_log learning_logs ll_env manage.py users
(ll_env)learning_log$ 
ls users
 
admin.py __init__.py migrations models.py tests.py views.py
Эта команда создает новый каталог с именем 
users

, структура которого повторяет 
структуру каталогов приложения 
learning_logs

.
Добавление пользователей в settings .py
Новое приложение необходимо добавить в 
settings .py
:
settings.py
...
INSTALLED_APPS = (
...
# My apps
'learning_logs',
'users',
)
...
Django включает приложение 
users
в общий проект.
Включение URL-адресов из users
Затем необходимо изменить корневой файл 
urls .py
, чтобы он включал URL-адреса, 
написанные для приложения 
users
:
urls.py
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^users/', include('users.urls', namespace='users')),
url(r'', include('learning_logs.urls', namespace='learning_logs')),
]
Добавим строку для включения файла 
urls .py
из 
users
. Эта строка будет соответ-
ствовать любому URL-адресу, начинающемуся со слова 
users
, — например, 
http://
localhost:8000/users/login/
. Также будет создано пространство имен 
'users'
, чтобы 
мы могли отличать URL-адреса, принадлежащие приложению 
learning_logs

от URL, принадлежащих приложению 
users
.
Страница входа
Начнем с реализации страницы входа. Мы воспользуемся стандартным представле-
нием 
login
, которое предоставляет Django, так что шаблон URL выглядит немного 
иначе. Создайте новый файл 
urls .py
в каталоге 
learning_log/users/
и добавьте в него 
следующий код:
urls.py
"""Определяет схемы URL для пользователей"""


Создание учетных записей пользователей
421
from django.conf.urls import url
 
from django.contrib.auth.views import login
from . import views
urlpatterns = [
# Страница входа
 
url(r'^login/$', login, {'template_name': 'users/login.html'},
name='login'),
]
Сначала импортируется представление 
login
по умолчанию 

. Схема страницы 
входа соответствует URL 
http://localhost:8000/users/login/

. Когда Django чита-
ет этот URL-адрес, слово 
users
указывает, что следует обратиться к 
users/urls .py

а 
login
сообщает о том, что запросы должны отправляться представлению 
login
по умолчанию (обратите внимание: в аргументе представления используется 
login

а не 
views.login
). Так как мы не пишем собственную функцию представления, 
мы передаем словарь, который сообщает Django, где искать шаблон (сейчас мы 
его напишем). Этот шаблон будет частью приложения 
users
, а не приложения 
learning_logs
.
Шаблон login
Когда пользователь запрашивает страницу входа, Django использует свое пред-
ставление 
login
по умолчанию, но мы все равно должны предоставить шаблон 
для этой страницы. В каталоге 
learning_log/users/
создайте каталог с именем 
templates
, а внутри него — еще один каталог с именем 
users
. Вот как выглядит 
шаблон 
login .html
, который должен находиться в 
learning_log/users/templates/
users/
:
login.html
{% extends "learning_logs/base.html" %}
{% block content %}

{% if form.errors %}
Your username and password didn't match. Please try again.
{% endif %}
 

{% csrf_token %}
 
{{ form.as_p }}
 

 


{% endblock content %}
Шаблон расширяет 
base .html
, чтобы страница входа по оформлению и поведению 
была похожа на другие страницы сайта. Обратите внимание: шаблон в одном при-
ложении может расширять шаблон из другого приложения.


422

Достарыңызбен бөлісу:
1   ...   249   250   251   252   253   254   255   256   ...   266




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

    Басты бет