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



Pdf көрінісі
бет229/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   225   226   227   228   229   230   231   232   ...   238
Рис. 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/


:



Достарыңызбен бөлісу:
1   ...   225   226   227   228   229   230   231   232   ...   238




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

    Басты бет