Федеральное агентство по образованию Российской Федерации
Государственное образовательное учреждение
высшего профессионального образования
"КУБАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ"
Кафедра математического моделирования
КУРСОВАЯ РАБОТА
Разработка архитектуры веб-сервиса
закрытой социальной сети с использованием фреймворка Django
Работу выполнила студентка 4-го курса
Михно В.Д.
Краснодар - 2013
Научный руководитель,
Доцент, к. ф-м. н.
С.Е. Рубцов
Содержание
Введение
1. Анализ закрытых социальных сетей
2. Структура Web-приложения
2.1 База данных и административная часть
2.2 Логическая часть приложения и отображение данных на страницах
Заключение
Список использованных источников
Приложение А
Приложение В
В настоящее время количество социальных сетей в Интернете и численность их участников растет с невероятной быстротой. Социальные сети уже сегодня посещает более чем две трети онлайн-аудитории во всем мире, и это четвертая по популярности онлайн-категория после поисковых порталов, информационных порталов и программного обеспечения, которая опережает даже электронную почту (по данным компании Nielsen Online, исследующей онлайн поведение в 9 странах). По данным той же компании, использование онлайн-сообществ сегодня растет вдвое более быстрыми темпами, чем любой из четырех других секторов сети Интернета и в три раза быстрее, чем пользование Интернетом в целом. Социальные сети (social networks) привлекают людей, преследующих различные цели: поддержание контакта со старыми знакомыми и поиск новых, в т. ч. обустройство личной жизни; поиск работы, продвижение своего бизнеса, профессиональное общение; обмен информацией и медиаконтентом с другими пользователями. В России социальные сети развиваются с недавнего времени, но, не смотря на свою молодость многие сети, приобрели уже огромную популярность.
Социальная сеть, в современном её понимании, является интернет-сообщества пользователей, объединённых по какому-либо признаку на базе одного сайта, который и называется в этом случае социальной сетью. Главным фактором объединения пользователей в социальную сеть является какая-либо их общность - финансовое положение, пол, принадлежность к той или иной расе, национальности, вероисповеданию, профессии и так далее.
Интеграция обычных сайтов с внешними социальными сетями уже довольно активно вошла в нашу жизнь. Многие миллионы сайтов тесно интегрировались с самыми популярными сетями, и почти все новые проекты сегодня создаются с интеграцией по умолчанию. Это может быть в виде ссылок на официальные сообщества поклонников сайта в социальных сетях, могут быть кнопки отправки информации в социальные сети, кнопки "мне нравится", интеграция интернет-магазинов для продажи товаров, специальные приложения для работы с сетями, инструменты комментирования через социальные сети и многое другое. Следующим шагом будет создание специализированных платформ для интеграции, которые позволят создавать "социальную" экосистему внутри сайтов, и пользователи, будучи залогиненными в Facebook или VK, смогут получать все то же, что и в самой социальной сети, только при этом будучи на стороннем сайте. Тот же процесс можно будет сделать и в обратном направлении: пользователи смогут, не выходя из социальной сети, получать нужную им информацию со сторонних сайтов. В свою очередь, внешние сайты с удовольствием принимают инструменты интеграции, потому что это дополнительный приток посетителей из сетей, а значит, и дополнительная прибыль. Так социальные сети концентрируют в руках власть, можно сказать "подсаживают сайты на интеграцию".
В тоже время компании понимают важность организации коммуникации между пользователями внутри экосистем сайтов, не выпуская их наружу и не доверяя этот важный процесс потенциальному конкуренту. Ведь социальные сети быстро развиваются, а пользователи требуют новый контент, поэтому не исключается риск создания сетью контента, близкого группе сайтов, которые ранее интегрировались с определенной сетью, и тем самым превращение огромной социальной сети в прямого конкурента для более мелкого сайта или целого сегмента. Компании стараются создавать полезный социальный функционал, который будет единым целым с сайтом и сможет привлечь новых пользователей. Часто компании переделывают свои сайты в тематические социальные сети и увеличивают свою популярность в разы.
Некоторые работодатели запрещают пользоваться социальными сетями - не только ради экономии, но и чтобы воспрепятствовать утечке информации.
закрытая социальная сеть фреймворк
В данной курсовой работе представлена разработка
веб-приложения, обеспечивающего социальные взаимоотношения между сотрудниками
владельца данного приложения. Что позволяет не только свести риск потери
конфиденциальной информации к минимуму, но и возможность ограничение доступа к
социальным сетям, компенсируя это наличием собственной закрытой социальной сети.
Кроме общедоступных "В Контакте" и Facebook,
существуют закрытые частные социальные сети, членство в которых доступно только
для избранных или для людей с определенной профессией. Рассмотрим некоторые из
них.Одна из самых первых эксклюзивных европейских социальных сетей, принимающая
только "людей из мира высокого искусства, которые определяются по трем
параметрам". Вы должны быть приглашены кем-то из существующих членов
данной сети, но даже в этом случае нет никакой гарантии, что вас примут.
Руководит сетью 25−летний швейцарец Патрик Лиотард-Войт (Patrick
Liotard-Vogt).
Рисунок 1 - Социальная сеть ASmallWorld
Одна из первых социальных сетей с элитными участниками была основана в 2001 году тремя немецкими бизнесменами. Членство обычно выдается по приглашению, хотя вы можете обратиться напрямую к создателям с просьбой о вступлении.
Создатели сети описывают ее как
"оазис вдохновения и развлечений" для "космополитичного,
независимого, значимого, толерантного, либерального нонконформиста".
Рисунок 2 - Decayenne
.ru
Evrika.ru - закрытая социальная сеть для российских врачей. Принадлежит медиа - группе "MedInform Healthcare Communications". Все страницы сайта, кроме главной, не индексируются поисковиками и доступны только зарегистрированным пользователям. Для получения доступа нужно быть действующим врачом, способным подтвердить свои профессиональные знания и факт работы в медицинском учреждении.
Имеется как социальная составляющая: профили пользователей, обмен контактами и сообщениями, группы, комментарии; так и внутренний информационный портал: медицинские новости, перепечатки научных статей из российских и зарубежных журналов, оригинальные публикации медиков экспертного уровня.
По нашему мнению, сайт нацелен на доходы от продвижения лекарств, медоборудования и других изделий для здравоохранения в профессиональную среду. Это подтверждает его интеграция с ресурсом "МедМнение". Последний в интересах фармацевтических компаний проводит опросы среди врачей и платит деньги за участие в них.
Социальная сеть для адвокатов.
Недавно созданная закрытая социальная сеть адвокатов набирает обороты. Адвокатское сообщество России включает примерно 65000 человек.65000 человек профессиональных юристов, объединенных Федеральным Законом "Об адвокатской деятельности и адвокатуре в Российской Федерации", кодексом профессиональной этики адвоката. Каждый адвокат, пришедший в сеть, чувствует родную среду, плечо коллеги, единство интересов и профессионализм.
Структура закрытой социальной сети адвокатов синхронна существующей в России структуре адвокатского сообщества. Адвокаты объединены в группы адвокатских Палат регионов.
В сети нет ников, каждый знает с кем общается, ведь адвокат - открытая профессия.
В сети нет места бюрократии, рекламе и платным услугам. Сеть создана адвокатами и для адвокатов.
Закрытость проекта обусловлена не тайнами и интригами, а особым языком и наречием. Темы и вопросы, обсуждаемые адвокатами, связаны именно с профессией. Информационная площадка, объединяющая всех адвокатов России от Республики Адыгея до республики Саха, дает возможность профессионального общения и установления горизонтальных связей.
Разрозненная информация из адвокатских Палат регионов и адвокатских образований собирается в одном месте и становится доступной каждому адвокату.
Сеть дает возможность общаться, обменяться опытом, обсуждать правоприменительную практику, получить помощь коллеги и реальный практический совет.
Постановка задачи
С помощью свободно распространяемого фреймворка Django для веб-приложений, на языке Python, разработаем веб-приложение, компонентами которого будут основополагающие части социальной сети: отправка сообщений, поиск друзей, главная страница пользователя и лента новостей.
Первое что необходимо сделать, это подключить модуль регистрации django-registration и систему идентификации пользователей, предоставляющую работу с пользователями, группами пользователей, правами и сессиями пользователей, работающими через cookies. Эта система представляется приложением django. contrib. auth., обеспечивающее доступ к модели User, которая будет отвечать за базу данных, в которую будут заноситься все регистрируемые пользователи. Без регистрации доступ к страницам будет ограничен.
Весь функционал сайта разбит на 4 приложения. Первое должно будет осуществлять отображение и редактирование личной информации. Второе отображение новостей для всех пользователей. Третье поиск друзей по логину, фамилии, имени или отчеству, а также возможность отправки сообщения, добавления, удаления, отклонения и принятия в друзья другого пользователя. И последнее четвертое, будет отвечать за обмен сообщениями между пользователями.
Каждое приложение будет состоять из двух частей:
· Общедоступная часть, которая дает людям возможность управлять своим профилем.
· Административная часть, которая позволит администратору редактировать базу данных сайта.
Эти две части будут реализовываться следуя шаблону
Модель-Представление-Контроллер (Model-View-Controller, MVC). Примем, что MVC
определяет способ разработки программного обеспечения при котором код для
определения и доступа к данным (модель, файл models. py) отделен от логики
приложения (управление, файл views. py), которая в свою очередь отделена от
интерфейса пользователя (представление, файл html).
Как мы уже сказали, наше приложение будет строиться основываясь на шаблоне MVC. MVC - это схема использования нескольких шаблонов, с помощью которых модель данных приложения, пользовательский интерфейс взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные.
Основой проекта будут manage. py, __init__. py, settings. py, urls. py, wsgi. py.
· manage. py скрипт, который позволяет вам взаимодействовать с проектом Django.
· __init__. py пустой файл, который указывает Python, что текущий каталог является пакетом Python.
· settings. py настройки/конфигурация проекта.
· urls. py конфигурация URL-ов для вашего проекта Django. Это "содержимое” всех Django-сайтов.
· wsgi. py точки входа для WSGI-совместимый веб-серверов.
Содержимое этих файлов представлено в ПРИЛОЖЕНИИ А.
Скачав и подключив модуль django-registration, и установив
приложение django. contrib. auth., можем переходить к той части проекта,
которая будет отвечать за функционал нашего сайта.
Рассмотрим модельную часть приложения, отвечающую за главную страницу и редактирование данных пользователя.
Класс Profile будет содержать поля типа AutoOneToOneField, ImageField, TextField, CharField и ManyToManyField.- связь один-к-одному, в отличие от связи многие-ко-многим возвращает один объект. Указывает на модель User и осуществляет доступ к объекту данной модели.
Поле ImageField - предназначено для загрузки изображения.
Рисунок 3 - Поле User типа AutoOneToOneField и поле Иконка
типа ImageField
Поле TextField - большое текстовое поле. Интерфейс администратора отображает поле как <textarea>.- Строковое поле для хранения коротких или длинных строк. Интерфейс администратора отображает поле как <input type="text">.- Связь многое-ко-многому. Принимает позиционный аргумент: класс связанной модели. В нашем случае мы используем это поле для определения друзей для каждого пользователя. Использование в качестве позиционного аргумента 'self', позволяет нам создать рекурсивную связь, т.е. объект со связью многие-ко-многим на себя. Это значит, что мы будем помещать в это поле ссылки на объекты из этой же модели.
В этом же файле models. py будут описаны две модели Message и Chat, которые позволяют обмениваться сообщениями между друзьями.
Модель Message содержит два поля AutoOneToOneField,
DateTimeField, определяющее поле для ввода даты, CharFiels, TextField и
BooleanField (Рис.4). Последнее нам необходимо для определения, что сообщение
отправлено и принято (т.е. прочитано). Это поле будет заполняться галочкой,
когда получатель зайдет на страницу СООБЩЕНИЯ и просмотрит чат, в котором
появилось новое сообщение.
Рисунок 4 - Административная часть. Модель Message.
Что касается модели Chat, так она предназначена для
распределения всех объектов модели Message на чаты. Модель содержит два поля
многое-к-одному - ForeignKey, ссылающиеся на модель User, для определения
участников чата, и поле ManyToManyField для хранения объектов модели Message,
пара получатель и отправитель которых соответствует двум полям ForeignKey
модели Chat (Рис.5).
Рисунок 5 - Модель Chats. Объект модели содержащий 3 поля:
первые два для определения участников чата, а второе для хранения объектов
модели Message.
Теперь перейдем к файлу models. py приложения отвечающего за новостную ленту.
Две модели Blog и Comment. Модель Blog ссылается, с помощью поля ManyToManyField, на модель Comment. Модель Comment содержит два поля типа TextField для распределения текста новости.
Если текст оказывается слишком большим, то пользователь большую часть отправляет в нижнее поле, и на странице появляется новость только с тем, что было в первом поле и ссылка "читать полностью >>".
При нажатии на эту ссылку появляется полный текст с возможностью комментировать его.
Так как эти две модели похожи на Message и Chat, поэтому не
будем останавливаться на них. Они представлены в ПРИЛОЖЕНИИ В.
Функционал главной страницы представлен двумя функциями my_profile и user_settings.
По названиям можно догадаться, какая функция за что отвечает.
Первая my_profile, будет отображать главную страницу пользователя (Рис. 6):
Рисунок 6 - Отображение данных модели Profile.
Как мы видим, внизу всех данных есть ссылка на редактирование
своих данных. Все поля для ввода каких-либо данных реализуются с помощью
модельных форм, которые аналогичны моделям, или просто форм. И те и другие
реализуются с помощью вспомогательных классов, которые описаны в ПРИЛОЖЕНИИ В.
Рисунок 7 - Редактирование данных модели Profile.
Весь код данных страниц представлен в ПРИЛОЖЕНИИ B.
Приложение, отвечающее за поиск друзей, позволяет находить по
фамилии, имени, отчеству и логину пользователя (Рис. 8).