Создание сайта для научно-образовательного центра 'Интеллектика'

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    1,07 Мб
  • Опубликовано:
    2017-01-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Создание сайта для научно-образовательного центра 'Интеллектика'

СОДЕРЖАНИЕ

Введение

1. Анализ существующих систем для разработки сайта

.1   Статический сайт

1.2    Динамический сайт

1.3    PHP

1.4    Ruby

1.5    Python

1.6    Joomla

1.7    Ruby on Rails

1.8    Django

2. Разработка технических требований и постановка задач выпускной квалификационной работы

. Архитектура и структура сайта на фреймворке Django

.1 Архитектура Django

.2 Структура Django

.3 Структура сайта

. Выбор базы данных для сайта

.1 SQLite

.2 PostgreSQL

.3 MySQL

.4 Oracle

. Разработка приложения для сайта

. Разработка приложения авторизации для просмотра закрытых научных проектов центра

. Тестирование сайта

.1 Конфигурационное тестирование

.2 Верность HTML кода

.3 Функциональное тестирование

.4 Тестирование безопасности

. Разработка документации для администратора сайта

Заключение

Список использованных источников

ВВЕДЕНИЕ

С момента основания сети интернет количество пользователей неуклонно увеличивается большими шагами. Большая доля населения имеет у себя дома или на работе выход к его ресурсам. Возникает необходимость использования этого направления в информационных целях. Интернет дает прекрасную возможность фокусировать воздействие на конкретную узко профильную, целевую аудиторию, в которой заинтересована организация. Предрасположенность пользователей интернета к получению информации способствует к её более позитивному восприятию и высокой усвояемости.

Наличие у организации сайта сегодня считается не просто делом престижа, а необходимостью, если ее деятельность связана с информационными технологиями. На сегодняшний день уже не встает вопрос, нужен сайт или не нужен, но очень актуальна тема, как сделать сайт максимально эффективным с точки зрения успешной коммуникации и поддержания благоприятного имиджа.

Исходя из этого, темой выпускной квалификационной работы было выбрано создание сайта для научно-образовательного центра «Интеллектика».

Научно-образовательный центр (далее - НОЦ) создан на базе сложившейся системы подготовки специалистов и поисковых научных исследований в области создания и изучения систем и технологий интеллектуализации в рамках научных школ Федерального государственного образовательного учреждения высшего профессионального образования «Вологодский государственный университет <#"897347.files/image001.jpg">

Рисунок 3.1 - Архитектура Django

.1 Архитектура Django

Архитектура Django состоит из четырех основных компонентов:

1)    модель данных являются сердцевиной любого современного веб-приложения. Модель - это важнейшая часть приложения, которое постоянно обращается к данным при любом запросе из любой сессии. Любая модель является стандартным Python классом. Объектно-ориентированный mapper (ORM) обеспечивает таким классам доступ непосредственно к базам данных. Если бы не было ORM, пришлось бы писать запросы непосредственно на SQL. Модель обеспечивает облегченный механизм доступа к слою данных, инкапсулирует бизнес-логику. Модель не зависит от конкретного приложения. Данными можно манипулировать даже из командной строки, не используя при этом веб-сервер;

2)      представление выполняют разнообразные функции, в том числе контролируют запросы пользователя, выдают контекст в зависимости от его роли. View - это обычная функция, которая вызывается в ответ на запрос какого-то адреса (URL) и возвращает контекст;

)        шаблоны являются формой представления данных. Шаблоны имеют свой собственный простой метаязык и являются одним из основных средств вывода на экран;

)        URL механизм внешнего доступа к представлениям (view). Встроенные в URL регулярные выражения делают механизм достаточно гибким. При этом одно представление может быть сконфигурировано к нескольким URL, предоставляя доступ различным приложениям. Здесь поддерживается философия закладок: URL становятся самодостаточными и начинают жить независимо от представления.

В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS <#"897347.files/image002.jpg">

Рисунок 3.2 - Структура сайта

4. Выбор базы данных для сайта

Существует масса различных баз данных, которые можно использовать для нужд Django, и каждая из них требует наличия как самого программного обеспечения, реализующего базу данных, так и библиотеки для языка Python, которая обеспечит взаимодействие с ней.

 

.1 SQLite


Название SQLite говорит само за себя - это «легковесная» реализация базы данных SQL. В отличие от PostgreSQL, MySQL и многих коммерческих баз данных, таких как Oracle или MS SQL, база данных SQLite не является самостоятельным сервером, это просто библиотека, реализующая интерфейс доступа к дисковым файлам базы данных. Как и другие «легковесные» реализации типично сложных служб.

Преимущество SQLite:

)      простота в настройке и использовании;

2)      низкая нагрузка на сервер.

Недостатки SQLite:

)      недостаточная функциональность;

2)      невысокая производительность при работе с большими объемами данных.

Вследствие всего этого SQLite прекрасно подходит для быстрого запуска процесса разработки или для маленьких сайтов, где нет необходимости устанавливать полноценный веб-сервер баз данных. Однако, после этапа начального обучения, а также для более серьезных случаев развертывания необходимо будет приобрести нечто более существенное.

Чтобы иметь возможность взаимодействовать с базой данных SQLite, потребуется библиотека для языка Python. Используя Python 2.7, в нашем распоряжении имеется встроенный модуль sqlite3.

В отличие от серверов баз данных, описываемых ниже, SQLite не требует явного создания базы данных или механизма управления пользователями. Вместо этого просто выбирается каталог в файловой системе для базы данных (один из тех, что доступен веб-серверу для чтения и записи) и его имя записывается в виде параметра DATABASES в файле settings.py. После этого в указанном каталоге будет создан файл базы данных при обычном использовании утилиты manage.py.

 

.2 PostgreSQL

(часто это название сокращают до «Postgres») - это полноценный веб-сервер баз данных, обладающий широким спектром функциональных возможностей и давней историей развития, который является одним из ведущих приложений баз данных, распространяемых с открытыми исходными текстами. Эта база данных рекомендуется к использованию основными разработчиками Django, которые дают весьма высокие оценки ее качеству.

Чтобы иметь возможность взаимодействовать с базой данных Postgres из программного кода на языке Python, нам потребуется библиотека psycopg2.

Создание баз данных и пользователей в Postgres выполняется достаточно просто, в состав Postgres по умолчанию входят отдельные утилиты командной строки, такие как createuser и createdb, названия которых говорят сами за себя. Как только мы узнаем имя суперпользователя и пароль, мы сможем выполнить следующий пример и настроить базу данных и добавить пользователя для вашего проекта на платформе Django:

$ createuser -P django_userpassword for new role:it again:the new role be a superuser? (y/n) nthe new role be allowed to create databases? (y/n) ythe new role be allowed to create more new roles? (y/n) n:

$ createdb -U django_user django_db

Password:

В этом примере создается новая учетная запись django_user базы данных, с правом создания баз данных, которая затем используется для создания новой базы данных django_db. Выполнив эти действия и указав имя пользователя и базы данных в файле settings.py (вместе с паролем, присвоенным пользователю), мы сможем использовать утилиту manage.py для создания и обновления таблиц в базе данных.

 

.3 MySQL


Еще одним господствующим сервером баз данных, распространяемым с открытыми исходными текстами, является MySQL. В отличие от некоторых других серверов баз данных, MySQL включает в себя два внутренних механизма баз данных, отличающихся набором возможностей: первый механизм - это MyISAM, в котором отсутствует поддержка транзакций и внешних ключей, но имеется поддержка полнотекстового поиска. Другой механизм -InnoDB, более новый и обладающий более широкими возможностями, но в настоящее время он не поддерживает полнотекстовый поиск. Существуют и другие механизмы, но эти два используются наиболее часто.

Для организации взаимодействий с MySQL в платформе Django отдается предпочтение библиотеке python-mysql.

Создание баз данных в MySQL обычно выполняется с помощью многоцелевого инструмента администрирования mysqladmin. Как и в случае с Postgres, прежде чем мы сможем создать новую учетную запись для проекта на платформе Django, нам необходимо выяснить имя суперпользователя базы данных и пароль. Обычно суперпользователь называется root и чаще всего изначально не имеет пароля (что следует исправить, как только появится такая возможность). Таким образом, создание базы данных выглядит примерно так, как показано ниже.

$ mysqladmin -u root create django_db

В отличие от Postgres, управление пользователями в MySQL выполняется исключительно на уровне базы данных, поэтому, чтобы создать пользователя django_user базы данных, нам необходимо сразу же воспользоваться командной оболочкой SQL, которая называется mysql и выполнить следующий пример.

$ mysql -u roottable information for completion of table and column namescan turn off this feature to get a quicker startup with -Ato the MySQL monitor. Commands end with ; or \g.MySQL connection id is 6version: 5.0.51a-6 (Debian)'help;' or '\h' for help. Type '\c' to clear the buffer.> GRANT ALL PRIVILEGES ON django_db.* TO


Теперь можно изменить настройки в файле settings.py и приступить к использованию команд manage.py.

4.4 Oracle


Последняя база данных, которая в настоящее время поддерживается платформой Django - это коммерческое предложение компании Oracle.

Библиотека для организации взаимодействий с базой данных Oracle из программного кода на языке Python называется cx_oracle.

Двумя базами данных, которые в настоящее время не поддерживаются напрямую платформой Django, являются Microsoft SQL Server и IBM DB2.

Для нашего приложения на платформе Django мы будем использовать базу данных MySQL. После создания пользователя для базы данных, подключим её к Django. В файле settings.py редактируем параметр DATABASES.

Следующим шагом используем утилиту manage.py запускаем команду migrate. Она автоматически создает все нужные таблицы для работы Django в базе данных.

В Django большинство взаимодействий с базой данных осуществляется посредством механизма объектно-ориентированного отображения (Object-Relational Mapper или ORM) - функциональности, имеющейся, помимо Django, и в других современных инфраструктурах веб-разработки, таких как Rails. Системы ORM обретают все большую популярность среди разработчиков, так как они автоматизируют множество типичных взаимодействий с базой данных и используют знакомый объектно-ориентированный подход вместо инструкций SQL [6] [7].

Проект на платформе Django состоит из приложений. Опишем создание приложения вывода новостей и запись их в нашу базу данных.

После создания проекта intellectika нам нужно добавить в него приложение вывода новостей. Создаем приложение с использованием утилиты manager.py и команды startproject news, где news это название приложения.

После создания, каталог нашего проекта выглядит так:

Intellectika

__int__.py.py.py.py

__init__.py.py.py.py.py.py

manage.py

Файл для взаимодействия с базой данных - models.py. Urls.py - это отдельный файл URL в котором прописывается URL для отображения приложения новостей. Файл admin.py - нужен исключительно для удобства настройки отображения моделей в административной панели. views.py - файл управления логикой приложения. Файл tests.py - в нем описываются тесты для нашего приложения.

В файле models.py создаём модель News с нужными полями для отображения наших новостей.

# -*- coding: utf-8 -*-django.db import modelsdjango.utils import timezoneckeditor_uploader.fields import RichTextUploadingFieldNews(models.Model):_title = models.CharField(max_length=200,

vebose_name='Заголовок:')_text = RichTextUploadingField(verbose_name='Текстовое поле:')_file = models.FileField(blank=True, null=True, upload_to=

'files/news/%Y/%m', verbose_name='Файл')_date = models.DateField(verbose_name='Дата:')_date_time_published = models.DateTimeField(default=timezone.now,

verbose_name='Дата и время публикации:')

class Meta():_table = 'news'_name_plural = 'Новости'__unicode__(self):self.news_title

CharField - это текстовое поле для хранения коротких или длинных строк. RichTextUploadingField - редактируемое текстовое поле. Поле FileField используется для загрузки файлов. DateField и DateTimeField - поля отображение времени и даты. Так же в классе Meta мы указываем название таблицы в базе данных.

Некоторые приложения используют минимум одну таблицу в базе данных, поэтому нам необходимо их создать перед тем, как мы будем их использовать. Для этого с использованием утилиты manager.py и команды migrate, Django автоматически создаёт таблицу news в нашей базе данных и добавляет к ней уникальное поле id.

Для вывода новостей из базы данных нам нужно создать функцию представления в файле views.py.

# -*- coding: utf-8 -*-django.shortcuts import render, render_to_responsenews.models import Newsdjango.core.paginator import Paginatornews_all(request,page_number=1):_all = News.objects.order_by('-news_date_time_published')_page = Paginator(news_all, 5)render_to_response('news_all.html', {'news_all':

news_page.page(page_number)})

Где ключу news_all будет присвоено значение «News.objects.order_by('-news_date_time_published')», означающее, что нужно вывести все объекты из класса News, отсортированные по полю news_date_time_published.Так же Django поддерживает одновременную работу с несколькими базами данных.

научный сайт база данный приложение

5. Разработка приложения для сайта

Проект сайта на фреймворке Django состоит из приложений, которые соответствуют вкладкам главного меню сайта. Рассмотрим алгоритм создания приложения вывода проектов научно-образовательного центра «Интеллектика».

Каталог нашего проекта выглядит следующим образом:

Intellectika

__int__.py.py.py.py.py

Для создания приложения используем утилиту manage.py с командой startapp project, где project - это имя нашего приложения. В каталоге нашего проекта создается папка с названием нашего приложения.

Intellectika

__int__.py.py.py.py

__init__.py.py.py.py.py.py.py

Теперь редактируем файл settings.py. В параметр INSTALLED_APPS добавляем имя нашего приложения project.

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'ckeditor',

'ckeditor_uploader',

'project',)

В созданном нами приложении имеется файл models.py, в котором мы будем описывать поля модели нашего приложения. Создаем модель вывода проектов, этапов разработки и описываем все поля. Модели будут иметь связь «один ко многим», то есть у одного проекта может быть много этапов разработки.

# -*- coding: utf-8 -*-django.db import modelsckeditor_uploader.fields import RichTextUploadingFieldProjects(models.Model):_title = models.CharField(max_length=200,

verbose_name='Заголовок: ')_text = RichTextUploadingField(verbose_name='Текстовое поле: ')_date = models.DateField(verbose_name='Дата: ')Meta():_table = 'Projects'_name_plural = 'Проекты центра'__unicode__(self):self.projects_titleStage(models.Model):_title = models.CharField(max_length=200, verbose_name='Заголовок

этапа: ')_files = models.FileField(blank=True, null=True, upload_to=

'files/project/%Y/%m', verbose_name='Файл: ')_date = models.DateField(verbose_name='Дата: ')_projects = models.ForeignKey(Projects)Meta():_table = 'Stage'_name_plural = 'Этапы проекта'__unicode__(self):self.stage_title

После создания моделей, добавляем их в нашу базу данных с помощью команды migrate.

Когда модели были созданы и добавлены в базу данных, переходим к редактированию файлов urls.py, которые отвечают за конфигурацию URL нашего проекта и приложений. Первым редактируем файл urls.py нашего проекта. В нем добавляются URL ссылки для наших приложений.

# -*- coding: utf-8 -*-

from django.conf.urls import include, urldjango.contrib import admindjango.conf.urls.static import staticintellectica import settings= [(r'^admin/', include(admin.site.urls)),(r'^ckeditor/', include('ckeditor_uploader.urls')),(r'^projects/', include('project.urls')),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Мы указываем, что после имени нашего домена, если встречено projects, будет перенаправление в файл urls.py нашего приложения.

Далее нам нужно отредактировать файл urls.py нашего приложения. Файл urls.py нашего приложения очень похож на urls.py нашего проекта, но тут уже идет не перенаправление, а вызов функций нашего приложения, как показано ниже в примере.

from django.conf.urls import url, includeproject import views= [(r'^(\d+)/$', views.projects),(r'^num/(?P<project_id>\d+)/$', views.project),]

Теперь нам нужно определить функции вывода нашего приложения. Вывод проектов должен быть таков, что на странице выводятся заголовки всех проектов и при нажатии на заголовок проекта идет перенаправление на полное описание этого проекта. Для этого реализуем две функции. Первая выводит заголовки всех проектов, а вторая выводит описание проекта. Так же для вывода заголовков проекта, нужно осуществить механизм постраничного вывода информации (пагинации).

В функции projects и project реализуем вывод всех объектов из базы данных, созданных моделями projects и stage (выборка проектов и этапов разработки) в шаблоны project.html и progects.html. В функциях мы так же определяем id, что бы этапы разработки проекта соответствовали самому проекту.

# -*- coding: utf-8 -*-django.shortcuts import render, render_to_responsedjango.core.paginator import Paginatorproject.models import Projects, Stageprojects(request, page_number=1):_all = Projects.objects.order_by('-projects_date')_page = Paginator(projects_all, 5)render_to_response('projects.html', {'projects_all':

news_page.page(page_number) })project(request, project_id=1):= {}['project'] = Projects.objects.get(id=project_id)['stage'] = Stage.objects.filter(stage_projects_id=project_id)render_to_response('project.html', args)

В каталоге templates нашего приложения, мы создаем файлы project.html и progects.html, которые будут являться шаблонами вывода нашего приложения.

В файле projects.html мы добавляем значение ключей из функции projects, как показано ниже в примере.

{% load staticfiles %}

{% block content %}

<div>

{% for project in projects_all %}

<a href="/projects/num/{{ project.id }}/">

<h3>

{{ project.projects_title }}

<p>

</h3>

</a>

<a href="/projects/num/{{ project.id }}/">

<h3>

{{ project.projects_title }}

<p>

</h3>

</a>

{% endfor %}

<div style="text-align: center">

{% if projects_all.has_previous %}

<a>

}}">Назад</a>

{% else %}

<span style="color: #C7DAFF">Назад</span>

{% endif %}

Страница {{ projects_all.number }} из {{ projects_all.paginator.num_pages

}}

{% if projects_all.has_next %}

<a>

}}">Вперед</a>

{% else %}

<span style="color: #C7DAFF">Вперед</span>

{% endif %}

</div>

</div>

{% endblock %}

В нем мы описываем вывод всех заголовков проектов, где заголовки будут ссылками на проект по их id. В нем так же необходимо реализовать кнопки пагинатора, добавленного в функцию projects.

В файле projects.html мы добавляем значение ключей из функции projects.

{% load staticfiles %}

{% block content %}

<div>

<h3>{{ project.projects_title }}</h3>

<div>{{ project.projects_text|safe }}</div>

<p>Дата публикации: {{ project.projects_date}}</p>

<div>

<h4>{{ s.stage_title }}</h4>

{% if s.stage_files %}

<a href="{{ s.stage_files.url }}">Скачать файл</a>

{% endif %}

<p>Дата публикации: {{ s.stage_date }}</p>

</div>

{% endfor %}

<h3>{{ project.projects_title }}</h3>

<div>{{ project.projects_text|safe }}</div>

<p>Дата публикации: {{ project.projects_date}}</p>

{% for s in stage %}

<div>

<h4>{{ s.stage_title }}</h4>

{% if s.stage_files %}

<a href="{{ s.stage_files.url }}">Скачать файл</a>

{% endif %}

<p>Дата публикации: {{ s.stage_date }}</p>

</div>

{% endfor %}

</div>

{% endblock %}

В projects.html мы осуществляем вывод проекта со всеми добавленными и относящимися к этому проекту этапами.

Таким образом, по определенным URL будет вызвана нужная нам функция, которая передаст в шаблон необходимые данные.

6. Разработка приложения авторизации для просмотра закрытых научных проектов центра

Создадим приложение авторизации пользователей, которые смогут просматривать закрытые проекты научно-образовательного центра «Интеллектика». Запускаем команду startapp loginsys, где loginsys - это имя нашего приложения для авторизации.

Теперь структура нашего проекта выглядит следующим образом:

Intellectika

__int__.py.py.py.py

__init__.py.py.py.py.py.py

templates

manage.py

Редактируем файл settings.py. В параметр INSTALLED_APPS, после приложения для вывода проектов добавляем имя нашего приложения для авторизации пользователей loginsys.

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'ckeditor',

'ckeditor_uploader',

'project',

'loginsys',

)

В данном случае, нам не нужно описывать модели для базы данных, поэтому начинаем с файла urls.py нашего проекта. Нам нужно добавить URL перенаправление в файл urls.py нашего приложения loginsys.

# -*- coding: utf-8 -*-django.conf.urls import include, urldjango.contrib import admindjango.conf.urls.static import staticintellectica import settings= [(r'^admin/', include(admin.site.urls)),(r'^ckeditor/', include('ckeditor_uploader.urls')),(r'^projects/', include('project.urls')),(r'^auth/', include('loginsys.urls')),

] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Теперь мы редактируем файл urls.py нашего приложения, добавляя в него URL. Каждый URL соответствует определенной функции представления из файла views.py.

# -*- coding: utf-8 -*-django.conf.urls import url, includeloginsys import views= [(r'^login/', views.login),(r'^logout/', views.logout),]

В файле views.py создаем функции представления авторизации. Функция login будет выполнять авторизацию пользователя на сайте, если он есть в базе данных нашего проекта, а функция logout будет производить деавторизацию пользователя на сайте.содержит встроенное приложение идентификации пользователей, предоставляя работу с пользователями, группами пользователей, правами и сессиями пользователей через встроенное приложение auth.

Так же функция login, осуществляет проверку, если она не находит пользователя в базе данных, появляется сообщение об ошибке.

# -*- coding: utf-8 -*-django.shortcuts import render_to_response, redirectdjango.contrib import authdjango.core.context_processors import csrflogin(request):= {}.update(csrf(request))request.POST:= request.POST.get('username', '')= request.POST.get('password', '')= auth.authenticate(username=username, password=password)user is not None:.login(request, user)redirect('/projects/1/'):

args['login_error'] = 'Пользователь не найден'

return render_to_response('login.html', args):render_to_response('login.html', args)logout(request):.logout(request)redirect('/projects/1/')

Следующим шагом мы создаем html шаблон нашего приложения в каталоге templates с именем login.html. В нем мы описываем форму авторизации пользователей, которая будет отправлять данных методом post по URL авторизации, вследствие чего будет выполняться функция login.

{% load staticfiles %}

{% block content %}

<div>

<p>Авторизируйстесь в системе для просмотра всех проектов

центра</p>

<form action="auth/login/" method="post">

{% csrf_token %}

<label for="username">Имя пользователя:</label>

<input type="text" name="username" id="username">

<label for="password">Пароль:</label>

<input type="password" name="password" id="password">

{% if login_error %}

<label for="error">{{ login_error }}</label>

{% endif %}

<input type="submit" value="Войти">

</form>

</div>

{% endblock %}

Для отображения закрытых проектов центра, нам требуется отредактировать наше приложение projects. Создаём в файле models.py дополнительное поле BooleanField для модели Projects, у которого будет два значения (True и False). Если значение равно True, то запись будет отображаться для всех, а если False, то только для авторизированных пользователей.

class Projects(models.Model):_title = models.CharField(max_length=200,

verbose_name='Заголовок: ')_text = RichTextUploadingField(verbose_name='Текстовое поле: ')_date = models.DateField(verbose_name='Дата: ')_check = models.BooleanField(default=True, blank=True,

verbose_name='Показывать всем пользователям: ')

class Meta():_table = 'Projects'_name_plural = 'Проекты центра'__unicode__(self):self.projects_title

Осталось отредактировать html шаблон project.html приложения project. В начало шаблона добавляем ссылки входа и выхода. Они будет отображаться условием, если пользователь не авторизирован - ссылка «Вход», если пользователь авторизирован - ссылка «Выход».

Необходимо добавить условия вывода проектов. Если пользователь авторизирован - ему отображаются все проекты центра, если пользователь не авторизирован - ему отображаются проекты, у которых поле BooleanField равно True.

{% load staticfiles %}

{% block content %}

<div>

{% if username %}

<div>

}})</a></div>

{% else %}

<div>

{% endif %}

<h2>Проекты научно-образовательного центра "Интеллектика"</h2>

{% for project in projects_all %}

{% if username %}

<a href="/projects/num/{{ project.id }}/">

<h3>

{{ project.projects_title }}

<p>

</h3>

</a>

{% elif project.projects_check %}

<h3>

{{ project.projects_title }}

<p>

</h3>

</a>

{% endif %}

{% endfor %}

<div style="text-align: center">

{% if projects_all.has_previous %}

<a>

}}">Назад</a>

{% else %}

<span style="color: #C7DAFF">Назад</span>

{% endif %}

Страница {{ projects_all.number }} из {{ pro-

jects_all.paginator.num_pages }}

{% if projects_all.has_next %}

<a>

}}">Вперед</a>

{% else %}

<span style="color: #C7DAFF">Вперед</span>

{% endif %}

</div>

</div>

{% endblock %}

Таким образом, мы реализовали авторизацию на сайте для просмотра закрытых проектов научно-образовательного центра «Интеллектика».

Регистрацию пользователей осуществляет администратор сайта. При регистрации пользователей, администратор самостоятельно через интерфейс задает права пользователям, полные права для управления сайта или же создание пользователя для просмотра всех проектов центра.

7. Тестирование сайта

Тестирование сайта - это проверка сайта различными способами на правильную работу.

Тестирование сайта обычно используют перед запуском проекта, чтобы получить гарантии правильной работоспособности или уже на существующем проекте, чтобы повысить его эффективность. Чем сложнее сайт, тем в более серьезном тестировании он нуждается.

.1 Конфигурационное тестирование

Этот вид тестирования позволяет проверить, как сайт ведет себя при различных разрешениях экрана, в различных веб-браузерах. Для проверки были выбраны 5 самых популярных веб-браузеров:

1)    Google Chrome - версии 51.0.2704.84 m;

2)      Opera - версии 38.0.2220.29;

)        Yandex Brouser - версии 16.6.0.8149;

)        Mozila Firefox - версии 46.0.1;

)        Internet Explorer - версии 11.

Как показали тесты, при различных разрешениях экрана, в различных браузерах внешний вид и функциональность сайта не изменились. Внешний вид сайта изображен на рисунке 7.1.

.2 Верность HTML кода

Проверка верности HTML кода страниц сайта. Для такого рода тестирования написано множество утилит - от простых скриптов до мощных валидаторов, проверяющих весь сайт на соответствие стандартам. Сайт научно образовательного центра «Интеллектика» был проверен одним из самых популярных валидаторов W3C. Результаты успешной проверки показаны на рисунке 7.2.

Рисунок 7.1 - Внешний вид сайта

Рисунок 7.2 - Результат успешной проверки сайта

7.3 Функциональное тестирование

Этот вид тестирования проверяет соответствие реализованных функций.

Было проведено тестирование всех страниц сайта на правильность вывод информации. Особое внимание было уделено страницам, использующих функцию отображения при авторизации, такими являются страницы вывода всех проектов научно центра.

Для не авторизованного пользователя, страница изображена на рисунке 7.3.

Рисунок 7.3 - Вид страницы проектов для не авторизированных пользователей

На странице отображаются только те проекты, у которых администратор сайта при добавлении поставил значение «Показывать всем пользователям». Показано на рисунке 7.4.

Для авторизированных пользователей, страница с проектами выглядит следующим образом. Как оказано на рисунке 7.5. На ней отображаются все проекты научно-образовательного центра.

Рисунок 7.4 - Значение для пользователей

Рисунок 7.5 - Вид страницы проектов для авторизированных пользователей

.4 Тестирование безопасности

Это одно из самых важных видов тестирования. Внимание было уделено формам авторизации пользователей и форме администратора на сайте. Для авторизации пользователей была создана форма авторизации. Если пользователь попытается ввести данные, которых нет в базе данных, страница выведет ошибку, как показано на рисунке 7.6.

Рисунок 7.6 - Ошибка формы авторизации пользователей

Так же при авторизации администраторов сайта, если пользователя нет в базе данных, форма вызовет ошибку.

Регистрацией пользователей занимается администратор сайта. При регистрации он назначает права пользователю, такие как:

)      суперпользователь - пользователь имеет все права на редактирование и просмотр всего сайта.

2)      активный пользователь - пользователь имеет права на просмотр всего сайта.

В итоге, после проведения тестирования сайт удовлетворяет нашим техническим требованиям.

8. Разработка документации для администратора сайта

Сайт создан на основе общей системы управления содержимым (далее система управления), которая представляет собой набор инструментов, позволяющих администраторам без знания языков программирования и, не обращаясь к разработчикам изменять содержимое. Доступ к управлению сайтом предоставляется через интернет, с помощью стандартного web-браузера.

Чтобы получить полный доступ к системе управления содержимым сайта необходимо авторизоваться (войти на сайт под учетной записью) с правами администратора. Для этого требуется открыть сайт по ссылке (<#"897347.files/image009.jpg">

Рисунок 8.1 - Система управления содержимым

Система управления содержимым сайта позволяет изменять и добавлять информацию. Для добавления информации на сайт требуется выбрать соответствующую главному меню вкладку, нажать кнопку «добавить» и заполнить, необходимы поля.


Рисунок 8.2 - Поля для заполнения

Заголовок будет отображаться на странице всех проектов центра ссылкой ведущей на полное описание проекта. Текстовое поле имеет редактор для удобного отображения текста об информации проекта. Так же необходимо заполнить поле даты и галкой выбрать условие, будет проект отображаться всем пользователям или только авторизированным.

Каждому проекту можно добавить несколько этапов разработки, для этого требуется заполнить нужные поля. Заголовок и дата заполняются описанием и датой публикации этапа. Что бы загрузить файл, достаточно нажать на кнопку выбора файла и загрузить его из операционной системы. Если требуется загрузить несколько файлов их нужно добавить в один архив и загрузить. Как было описано выше, одному проекту можно добавлять несколько этапов разработки. Для этого нужно нажать на кнопку «Добавить еще один Stage».

Когда все поля были заполнены корректно, остается нажать на кнопку сохранения и система управления откроет страницу со всеми существующими проектами центра.

Для добавления новостей центра, нажимаем на кнопку «добавить», напротив вкладки «Новости», вследствие чего открывается страница добавления новостей. Показано на рисунке 8.3.

Рисунок 8.3 - Страница добавления новостей

Заголовок будет отображаться на странице всех новостей центра ссылкой ведущей на полное описание новости. Текстовое поле так же имеет редактор для удобного отображения текста об информации проекта. Для новости остаётся указать дату и при необходимости прикрепить файл.

Если все необходимые поля заполнены, нажимаем кнопку «сохранить» и система управления откроет страницу со всеми существующими новостями центра.

Для добавления элемента в структуру центра, нажимаем на кнопку «добавить», напротив вкладки «Структура центра», вследствие чего открывается страница добавления элемента. Показано на рисунке 8.4.

Рисунок 8.4 - Страница добавления элемента

Заголовок будет отображаться на странице элементов структуры центра ссылкой ведущей на полное описание элемента или на внешний сайт. Текстовое поле имеет редактор для удобного отображения текста. Для того, что бы заголовок элемента структуры центра ввел на внешний сайт, необходимо заполнить поле ссылки, указав адрес перенаправления. Если не будет указана, то необходимо заполнить текстовое поле для описания элемента структуры.

Далее жмём кнопку сохранения, и система управления откроет страницу со всеми элементами структуры центра.

Для изменения информации на сайт требуется выбрать соответствующую главного меню вкладку и нажать кнопку «изменить». Система управления откроет страницу со всеми элементами, соответствующими главному меню для изменений. Необходимо выбрать нужный для изменения элемент и щелкнуть по нему мышкой. Откроется необходимая для нас информация, редактируем и сохраняем.

При необходимости загрузки фотографий или изображений, их можно загружать через редактируемые текстовые поля. Для этого необходимо, при добавлении или изменении информации нажать на соответствующую кнопку редактируемого поля. Показано на рисунке 8.5.

Рисунок 8.5 - Редактируемое текстовое поле

Система управления откроет форму загрузки, где необходимо выбрать вкладку «Загрузить», выбрать файл из операционной системы и загрузить его на веб-сервер. При необходимости, после загрузки необходимо изменить размер картинки или изображения. Для этого необходимо во вкладе «Данные об изображении» указать ширину, высота изображения изменится автоматически, как показано на рисунке 8.6.

Рисунок 8.6 - Вкладка «Данные об изображении»

После добавления картинки или фотографии, она отобразиться в редактируемом поле. При необходимости добавляем текст или описание.

За регистрацию пользователей отвечает администратор сайта, только у него есть права на добавление и удаление пользователей. Для добавления пользователей необходимо перейти на главную страниц системы управления и нажать на кнопку «пользователи». Система управления откроет страницу со всем пользователями. Показано на рисунке 8.7.

Рисунок 8.7 - Страница пользователей

Для добавления необходимо нажать на кнопку «добавить пользователя». Необходимо ввести логин, пароль пользователя и нажать кнопку сохранения. Далее требуется указать дополнительную информацию о пользователе и выбрать необходимые права доступа.

Активный пользователь имеет права авторизации на сайте для просмотра закрытых научных проектов центра.

Пользователь со статусом персонала имеет права на добавление и редактировании информации на сайте.

Статус персонала присваивается тем пользователям, которые будут иметь полные права на управление сайтом.

ЗАКЛЮЧЕНИЕ

Результатом выпускной квалификационной работы является создание сайта для научно-образовательного центра «Интеллектика», главной целью которого является внедрение инновационных образовательных программ и поведения фундаментальных и прикладных исследований в области информатики и искусственного интеллекта.

В процессе написания выпускной квалификационной работы были учтены современные интернет-технологии, программные инструменты, основные понятия, способы представления различной информации на страницах сайта, а так же правила и советы по разработке и созданию сайтов.

При разработке сайта был проведен анализ существующих систем для разработки сайта, вследствие чего был выбран фреймворк Django, написанный на языке программирования Python.

Базой данных была выбрана MySQL. Она является наиболее приспособленной для применения в интернет-технологиях СУБД (системой управления базами данных). Для исполнения приложений клиента на большинстве хостинг-провайдеров предоставляется небольшое количество ресурсов (как вычислительных, так и дисковых). Поэтому для данного применения необходима высокоэффективная СУБД, обладающая при этом высокой надежностью (большинство web-приложений и сайтов должны работать в режиме 24/7). По всем этим причинам MySQL стала незыблемым стандартом в области СУБД для интернет-технологий.

На сайте было разработано приложение авторизации пользователей, для просмотра закрытых научных проектов центра.

Так же перед размещением сайта в сети интернет было проведено его тестирование, чтобы получить гарантии правильной работоспособности сайта.

Для правильной работы сайта научно-образовательного центра была разработана документация администратора сайта.

Сайт удовлетворяет всем поставленным задачам и техническим требованиям. Он отражает всю структуру научно-образовательного центра «Интеллектика», специфику деятельности и отображение информации для пользователей.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Хахаева, И.А. Практикум по алгоритмизации и программированию на Python: учебно-методический комплекс / И.А. Хахаева. - Москва: Альт Линукс, 2011. - 226 с.

. Чан, У. Python. Создание приложений / Уэсли Чан. - Санкт-Петербург: Вильямс, 2015. - 816 c.

. Лутц, М. Изучаем Python, 4-е издание / Марк Лутц. - Санкт-Петербург: Символ-Плюс, 2011. - 1280 с.

. Лутц, М. Программирование на Python, в 2 т. Т. 1, 4-е издание / Марк Лутц. - Санкт-Петербург: Символ-Плюс, 2011. - 992 с.

. Лутц, М. Программирование на Python, в 2 т. Т. 2, 4-е издание / Марк Лутц. - Санкт-Петербург: Символ-Плюс, 2011. - 992 с.

. Форсье, Д. Django. Разработка веб-приложений на Python / Джефф Форсье, Пол Биссекс, Уэсли Чан. - Санкт-Петербург: Символ-Плюс, 2010. - 458 c.

. Головатый, А. Django. Подробное руководство / Адриан Головатый, Джейкоб Каплан-Мосс. - Санкт-Петербург: Символ-Плюс, 2010. - 560 c.

. Документация PHP [Электронный ресурс]: офиц. сайт

. Документация Ruby [Электронный ресурс]: офиц. сайт

. Документация Python[Электронный ресурс]: офиц. сайт

. Документация Django [Электронный ресурс]: офиц. сайт

. Документация Joomla [Электронный ресурс]: офиц. сайт

. Документация Ruby on Rails [Электронный ресурс]: офиц. сайт

Похожие работы на - Создание сайта для научно-образовательного центра 'Интеллектика'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!