88713

Разработка модели сетевого программного обеспечения на языке Рython на примере программы тестирования студентов

Курсовая

Информатика, кибернетика и программирование

Фундаментальная цель компонентов в Django - свободное сцепление и полное единство. Принцип свободного сцепления компонентов определяет основные положения построения приложений для Django разработчика, которые можно представить в виде основополагающих правил программирования: Меньше кода...

Русский

2015-05-03

207.68 KB

4 чел.

Оглавление

Введение3

1. Исследовательская часть4

1.1 Анализ предметной области4

1.2 Принципы разработки веб-приложений5

1.3 CGI-сценарии5

1.4 Особенности и возможности фреймворка Django8

2. Конструкторская часть12

2.1 Создание Django проекта12

2.2 Создание Django приложения13

2.3 Создание базы данных проекта14

2.4 Создание модели приложения15

2.5 Активация интерфейса администратора16

2.6 Создание Django URL для проекта19

2.7 Создание представлений в Django проекте19

2.8 Создание шаблонов21

3. Технологическая часть23

3.1 Руководство пользователя23

3.2 Аппаратные и программные требования24

Заключение25

Список литературы26

Введение

При выполнении курсовой работы необходимо разработать модель сетевого программного обеспечения на языке python, на примере программы тестирования студентов. Приложение должно обеспечивать работу с бд, расположенной на сервере, при этом осуществлять взаимодействие с бд (добавление/редактирование/удаление записей) с помощью администраторской части и прохождения теста и просмотр результата с помощью пользовательской части.

Для создание веб-приложения был использован Django framework. Преимущество Django заключается в огромном количестве импортируемых модулей. Так же существенным плюсом Django является то, что в пакет Django уже встроен небольшой девелоперский веб сервер для тестов, который возможно запускать и останавливать по своему желанию. Интересен факт, что для любых проектов на Django, разработчику не придется писать панель администратора - в Django уже есть большой модуль админ-панели, который подхватывает SQL схему модулей проекта, и генерирует на ее основе панель управления.

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

  1.  Меньше кода
  2.  Быстрая разработка
  3.  Не повторяйте себя
  4.  Явный лучше чем неявный
  5.  Последовательность

1. Исследовательская часть

1.1 Анализ предметной области

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

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

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

  1.   Принципы разработки веб-приложений

Под web-приложением будет пониматься программа, основной интерфейс пользователя, которой работает в стандартном WWW-браузере под управлением HTML и XML-документов. Для улучшение качества интерфейса пользователя часто применяют JavaScript, однако это несколько снижает универсальность интерфейса. Следует заметить, что интерфейс можно построить на Java- или Flash-апплетах, однако, такие приложения сложно назвать web-приложениями, так как Java или Flash могут использовать собственные протоколы для общения с сервером, а не стандартный для WWW протокол HTTP.

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

  1.   CGI-сценарии

Классический путь создания приложений для WWW - написание CGI-сценариев(иногда говорят - скриптов). CGI (Common Gateway Interface, общий шлюзовой интерфейс) – это стандарт, регламентирующий взаимодействие сервера  с  внешними  приложениями.  В  случае с WWW, web-сервер может направить запрос на генерацию страницы по определенному сценарию. Этот сценарий, получив на вход данные от web-сервера(тот, в свою очередь,  мог получить их от пользователя), генерирует готовый объект(изображение, аудиоданные, таблицу стилей и т.п.).

При вызове сценария Web-сервер передает ему информацию через стандартный ввод, переменные окружения и, для ISINDEX, через аргументы командной строки(они доступны через sys.argv).

Два основных метода передачи данных из заполненной в браузере формы Web-серверу(и CGI-сценарию) - GET и POST. В зависимости от метода данные передаются по-разному. В первом случае они кодируются и помещаются прямо вURL, например: http://host/cgibin/a.cgi?a=1&b=3. Сценарий получает их в переменной окружения с именем QUERY_STRING. В случае метода POST они передаются на стандартный ввод.

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

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

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

Для создания Web-приложений применяются и более сложные средства, чем web-сервер с расположенными на нем статическими документами и CGI-сценариями. В зависимости от назначения такие программные системы называются серверами web-приложений,  системами управления содержимым (CMS, Content ManagementSystem), системы web-публикации и средствами для создания WWW-порталов. Причем CMS-система может быть выполнена как web-приложение, а средства для создания порталов могут базироваться на системах web-публикации, для которых CMS-система является подсистемой. Поэтому,  выбирая систему для конкретных нужд, стоит уточнить, какие функции она должна выполнять.

Язык Python, хотя и уступает PHP по количеству созданных на нем web-систем, имеет несколько достаточно популярных приложений. Самым ярким примером средства для создания web-приложений является фреймворк Django.

Фреймворк — структура программного обеспечения, облегчающее разработку и объединение разных компонентов большого программного проекта. Основное преимущество - предоставление возможности строить проект при помощи паттерна MVC. В состав фреймворка входит ряд инструментов для более удобной обработки совершенно различных данных.

Современные фреймворки предоставляют разработчику различные возможности, вследствие чего, выбор фреймворка будет зависеть исключительно от целей и специфики разрабатываемого проекта. К наиболее популярным веб-фреймворками можно отнести Yii, Spring, Django, Ruby on Rails, Zend и многие другие.

Django появился осенью 2003 года благодаря программистам - Адриану Головатому и Саймону Уиллисону, работавших в газете Lawrence Journal - World. Специфика работы с новостными сайтами диктовала минимальное время исполнение проекта (целевых функций или новых приложений), порой до нескольких часов, который должен был использоваться на всех сайтах, включая такие, как LJWorld.com, Lawrence.com и KUsports.com. Фреймворк был выпущен в июле 2005 года, как ПО с открытым кодом, и назван Django в честь джазового гитариста Джанго Рейнхардта. В течение всего нескольких лет Django стал популярным проектом с десятками тысяч пользователей и разработчиков по всему миру.

Возможности Django

• ORM, API доступа к БД с поддержкой транзакций.

• встроенный мультиязычный интерфейс администратора.

• система кеширования.

• подключаемая архитектура приложений для Django-сайтов.

• авторизация и аутентификация.

• библиотека для работы с формами.

Преимущество Django заключается в огромном количестве модулей, из которых можно собрать что угодно, но и помимо этого, можно также легко их переписывать под свои нужды. Так же существенным плюсом Django является то, что в пакет Django уже встроен небольшой девелоперский веб сервер для тестов, который возможно запускать и останавливать по своему желанию. Интересен факт, что для любых проектов на Django, разработчику не придется писать панель администратора - в Django уже есть большой модуль админ-панели, который подхватывает SQL схему модулей проекта, и генерирует на ее основе панель управления.

1.4 Особенности и возможности фреймворка Django

Планирование и реализация Web-сайтов всегда сопровождается большими затратами усилий. Оптимизировать процесс написания сайтов, увеличить их производительность, сократить время, затрачиваемое на типичные задачи, становится возможным благодаря разнообразным фреймворкам. В последнее время большой популярностью пользуются такие веб-фреймворки, как Ruby on Rails и Django.

Оба языка являются полноценными, многоуровневыми фреймворками последнего поколения с открытым исходным кодом, которые основаны на архитектуре Модель-Представление-Контроллер (Model-View-Controller, MVC).

Model View Controller (MVC) – инструмент, позволяющий разделить общую архитектуру на отдельные части. При этом управляющая логика разделена на три отдельных компонента так, что модификация одного из них оказывает минимальное воздействие на другие части. К таким компонентам относят разделяемые данные, логику и слои визуализации (view layers). В общем случае такая концепция позволяет разделить разработку информационного наполнения на уровне базы данных и разработку Web-страниц. Особенностью MVC является разделение данных приложения, пользовательского интерфейса и управляющей логики на три отдельных компонента: модель, представление и контроллер. Хранилищами данных могут быть разнообразные СУБД: MySQL, PostgreSQL, SQLite, Oracle, SQL Server. Программисты предпочитают такие веб-серверы, как Apache или nginx. Оба языка используются как для написания стартапов, так и для создания разнообразных бизнес-приложений для крупного бизнеса.

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

Абстрагируясь от низкоуровневого процесса Web-строительства, django позволяет разработчикам быстро создавать основанные на базах данных динамичные Web-сайты. Фреймворк использует язык программирования Python. Но при переходе на Django программисту не требуется глубокое знание языка. Для изучения существует отличная документация, как на английском языке, так и на русском языках.

Первоначальная разработка Django, как средства для работы новостных ресурсов, достаточно сильно отразилась на его архитектуре: он предоставляет ряд средств, которые помогают в быстрой разработке веб-сайтов информационного характера. Так, например, разработчику не требуется создавать контроллеры и страницы для административной части сайта, в Django есть встроенное приложение для управления содержимым, которое можно включить в любой сайт, сделанный на Django, и которое может управлять сразу несколькими сайтами на одном сервере. Административное приложение позволяет создавать, изменять и удалять любые объекты наполнения сайта, протоколируя все совершённые действия, и предоставляет интерфейс для управления пользователями и группам (с пообъектным назначением прав)

В дистрибутив Django также включены приложения для системы комментариев, синдикации RSS и Atom, «статических страниц» (которыми можно управлять без необходимости писать контроллеры и представления), перенаправления URL и другое.

Возможности

  1.  ORM, API доступа к БД с поддержкой транзакций
  2.  встроенный интерфейс администратора, с уже имеющимися переводами на многие языки
  3.  диспетчер URL на основе регулярных выражений
  4.  расширяемая система шаблонов с тегами и наследованием
  5.  система кеширования
  6.  интернационализация
  7.  подключаемая архитектура приложений, которые можно устанавливать на любые Django-сайты
  8.  «generic views» — шаблоны функций контроллеров
  9.  авторизация и аутентификация, подключение внешних модулей аутентификации: LDAP, OpenID и проч.
  10.  система фильтров («middleware») для построения дополнительных обработчиков запросов, как например включённые в дистрибутив фильтры для кеширования, сжатия, нормализации URL и поддержки анонимных сессий
  11.  библиотека для работы с формами (наследование, построение форм по существующей модели БД)
  12.  встроенная автоматическая документация по тегам шаблонов и моделям данных, доступная через административное приложение.

Таким образом, выбор веб-фреймворка не в .NET стеке для проекта достаточно нетривиальная задача. Использовать Django нужно, когда:

  1.  нужно сделать быстро сайт с админской частью (блог, CMS и т.д.);
  2.  есть хорошее готовое приложение/модуль для Django и нужно совсем немного его видоизменить, а учитывая тот факт, что этот фреймворк специализируется на решении вполне конкретных задач разработки, то вероятность найти уже реализованный модуль гораздо выше;
  3.  нет необходимости работать с DAL (data access layer) и стандартного ORM вполне достаточно;
  4.  какие-то из модулей Django уже хорошо подходят для текущей задачи;
  5.  нужно сделать что-то очень быстро.

2. Конструкторская часть

2.1 Создание Django проекта

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

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

Для создания Django-проекта нужно выполнить следующие действия в рамках командной строки:

1. Перейти в корневую паку, в пределах которой пользователь решил определить место для файлов проекта

2. Создать Django-проект с помощью командной строки, выполнив команду django-admin.py startproject mysite*

* mysite – просто название проекта

Результатом станет генерация основных файлов проекта:

mysite /

manage.py

   mysite/

       __init__.py

       settings.py

       urls.py

       wsgi.py

Кратко о сгенерированных файлах:

  1.  Внешний каталог mysite / – это просто контейнер для проекта. Его название никак не используется Django, и его можно переименовать во что угодно.
  2.  manage.py: - скрипт, который позволяет программисту взаимодействовать с проектом Django.
  3.  Внутренний каталог books-master/ - это пакет Python проекта. Его название – это название пакета Python, которое будет  использоваться для импорта чего-либо из проекта.
  4.  __init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python.
  5.  settings.py: Настройки/конфигурация проекта.
  6.  urls.py: Конфигурация URL-ов для проекта Django. Это “содержание” всех Django-сайтов.
  7.  wsgi.py: Точка входа вашего проекта для WSGI-совместимых веб-серверов.
  8.  Только после создания Django-проекта возможно переходить к созданию Django-приложения.

2.2 Создание Django приложения

Приложение создается с помощью командной строки командой

manage.py startapp polls*

* polls – имя приложения

Создавать приложение следует в корневой каталоге проекта.

   polls /

       __init__.py

       admin.py

       models.py

       tests.py

       views.py

Кратко о сгенерированных файлах:

  1.  __init__.py: Пустой файл, который указывает Python, что текущий каталог является пакетом Python.
  2.  admin.py: с помощью этого файла Django подхватит данные из модели и сгенерирует панель администратора для проекта.
  3.  models.py: Описание модели приложения, по своей сути описание просто отражает поля таблицы в бд, по которым и будет при запуске работать приложение через ORM с помощью классов.
  4.  views.py: описывает логику работы приложения

2.3 Создание базы данных проекта

По умолчанию Django-проекты используют бд, данные о которой заносятся в файл setting.py при создании проекта. По умолчанию Django использует бд SQLite3, однако в состоянии работать и другими видами бд, в том числе не реляционными, например MongoDB.

  1.  DATABASES ( По умолчанию: {} (Пустой словарь) )

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

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

Самый простой вариант настройки это одна SQLite база данных.

Например:

DATABASES = {

   'default': {

       'ENGINE': 'django.db.backends.sqlite3',

       'NAME': os.path.join(BASE_DIR, 'our_db.sqlite3'),

   }}

Аргументы:

  1.  'our_db.sqlite3' – имя используемой бд
  2.  BASE_DIR = os.path.dirname(os.path.dirname(__file__)) – говорит Django где именно нужно искать бд, в данном случае – бд хранится в корневом каталоге проекта. Данная настройка указывается ранее, в начале файла setting.py.

При подключении к другим типам баз данных, таких как MySQL, Oracle или PostgreSQL, необходимы дополнительные параметры, которые в полном объеме перечислены в документации к Django.

2.4 Создание модели приложения

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

Схема бд выражается на языке Python в файле models.py

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

from django.db import models

class Question(models.Model):

   question_text = models.CharField('Вопрос', max_length=200)

   pub_date = models.DateTimeField('Дата')

   flag = models.IntegerField('Флаг', default=0)

   def __str__(self):

       return self.question_text

   def __unicode__(self):

       return self.question_text

class Choice(models.Model):

   question = models.ForeignKey(Question)

   choice_text = models.CharField('Варианты ответов', max_length=200)

   votes = models.IntegerField('Выбранный ответ', default=0)

   otv = models.IntegerField('Верный ответ', default=0)

   def __str__(self):

       return self.choice_text

   def __unicode__(self):

       return self.choice_text

class Result(models.Model):

   count_vop = models.IntegerField('Колличество вопросов', default=0)

   count_otv = models.IntegerField('Колличество отвеченных вопросов', default=0)

   count_pr = models.IntegerField('Колличество правильных ответов', default=0)

   def __str__(self):

       return (self.count_vop, self.count_otv, self.count_pr)

   def __unicode__(self):

       return (self.count_vop, self.count_otv, self.count_pr)

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

В файле settings.py в параметре INSTALLED_APPS нужно указать имя созданного приложения, что бы подключить его к проекту. Этот параметр указывает Django какие приложения активированы для текущего проекта. По умолчанию, параметр выглядит так:

INSTALLED_APPS = (

   'django.contrib.auth',

   'django.contrib.contenttypes',

   'django.contrib.sessions',

   'django.contrib.sites',

)

Элемент polls ссылается на приложение polls. Каждое приложение, перечисленное в INSTALLED_APPS, представлено полным путём к нему — он, путь к пакетам, разделён точками.

2.5 Активация интерфейса администратора

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

Сначала следует внести изменения в файле настроек (которые были закомментированы):

Добавить/восстановить django.contrib.admin в параметр INSTALLED_APPS. (Порядок элементов в INSTALLED_APPS не имеет значения, но лучше содержать их в алфавитном порядке, для удобства чтения.)

INSTALLED_APPS должен содержать django.contrib.auth, django.contrib.sessions и django.contrib.contenttypes. Интерфейс администратора требует подключения этих трёх пакетов.

MIDDLEWARE_CLASSES должен содержать django.middleware.common.CommonMiddleware и django.contrib.sessions.middleware.SessionMiddleware а также django.contrib.auth.middleware.AuthenticationMiddleware.

Далее нужно выполнить команду python manage.py syncdb. Она установит дополнительные таблицы в базу данных, которые будет использовать интерфейс администратора.

При первом запуске syncdb при наличии django.contrib.auth в INSTALLED_APPS, Django спросит о необходимости создания суперпользователя. Если его не создать сейчас, то позже для его создания потребуется выполнить python manage.py createsuperuser. В противном случае мы не сможем войти в интерфейс администратора.

За тем следует добавить административную часть в схему URL (в файл urls.py). По умолчанию, urls.py созданный с помощью django-admin.py startproject:

from django.contrib import admin

admin.autodiscover()

urlpatterns = patterns('',

   (r'^admin/', include(admin.site.urls)),  

)

После этих несложных настроек, мы можем увидеть интерфейс администратора в действии. Следует запустить тестовый сервер (python manage.py runserver) и перейдите по ссылке http://127.0.0.1:8000/admin/ (рис.1).

Рис.1. Интерфейс администратора

Все описание интерфейса администратора находится в файле admin.py

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

from django.contrib import admin

from polls.models import Choice, Question, Result

class ChoiceInline(admin.TabularInline):

   model = Choice

   extra = 1

class QuestionAdmin(admin.ModelAdmin):

   fieldsets = [

       (None,               {'fields': ['question_text']}),

       ('Информация о дате', {'fields': ['pub_date'], 'classes': ['collapse']}),

   ]

   inlines = [ChoiceInline]

   list_display = ('question_text', 'pub_date', 'flag')

   list_filter = ['pub_date']

   search_fields = ['question_text']

class ResultAdmin(admin.ModelAdmin):

   fieldsets = [

       (None,               {'fields': ['count_vop']}),

   ]

   list_display = ('count_vop', 'count_otv', 'count_pr')

admin.site.register(Question, QuestionAdmin)

admin.site.register(Result, ResultAdmin)

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

2.6 Создание Django URL для проекта

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

from django.conf.urls import patterns, url

from polls import views

urlpatterns = patterns('',

   url(r'^$', views.IndexView.as_view(), name='index'),

   url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),

   url(r'^results/$', views.ResultsView.as_view(), name='results'),

   url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),

   url(r'^clear/$', views.clear, name='clear'),

   url(r'^result/$', views.result, name='result'),

)

2.7 Создание представлений в Django проекте

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

Все представления находятся в файле views.py

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

from django.shortcuts import get_object_or_404, render

from django.http import HttpResponseRedirect

from django.core.urlresolvers import reverse

from django.views import generic

from django.utils import timezone

from polls.models import Choice, Question, Result

class IndexView(generic.ListView):

   template_name = 'polls/index.html'

   context_object_name = 'latest_question_list'

   def get_queryset(self):

       return Question.objects.filter(pub_date__lte=timezone.now())

class DetailView(generic.DetailView):

   model = Question

   template_name = 'polls/detail.html'

   def get_queryset(self):

       return Question.objects.filter(pub_date__lte=timezone.now())

class ResultsView(generic.ListView):

   model = Result

   template_name = 'polls/results.html'

def vote(request, question_id):

   p = get_object_or_404(Question, pk=question_id)

   pp = p.choice_set.all()

   for i in pp:

       i.votes = 0

       i.save()

   try:

       selected_choice = p.choice_set.get(pk=request.POST['choice'])

   except (KeyError, Choice.DoesNotExist):

       return render(request, 'polls/detail.html', {

           'question': p,

           'error_message': "Выбирите ответ",

       })

   else:

       selected_choice.votes = 1

       selected_choice.save()

       p.flag = 1

       p.save()

       return HttpResponseRedirect(reverse('polls:index'))

def clear(request):

   ques = Question.objects.all()

   ch = Choice.objects.all()

   for c in ch:

       c.votes = 0

       c.save()

   for ob in ques:

       ob.flag = 0

       ob.save()

   return HttpResponseRedirect(reverse('polls:index'))

def result(request):

   res = Result.objects.all()

   for n in res:

       n.count_otv = 0

       n.count_vop = 0

       n.count_pr = 0

       n.save()

   res1 = get_object_or_404(Result, pk=1)

   ques = Question.objects.all()

   ch = Choice.objects.all()

   for e in ques:

       if e.flag != 2:

           res1.count_vop += 1

           res1.save()

   for i in ques:

       if i.flag != 0:

           res1.count_otv += 1

           res1.save()

   for j in ch:

       if j.votes == 1 and j.otv == 1:

           res1.count_pr += 1

           res1.save()

   return HttpResponseRedirect(reverse('polls:results'))

2.8 Создание шаблонов

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

Шаблон для отображения списка вопросов храниться в файле index.html

<meta charset="UTF-8">

<title>Вопросник по дисциплине "Информатика</title>

{% load staticfiles %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

<p class="top">Вопросник по дисциплине "Информатика"</p>

<div>

<body>

{% if latest_question_list %}

   <ul>

   {% for question in latest_question_list %}

       {% if question.flag == 1 %}

       <li><a href="{% url 'polls:detail' question.id %}"><h2>{{ question.question_text }}</h2></a></li>

       {% else %}

       <li><a href="{% url 'polls:detail' question.id %}"><h3>{{ question.question_text }}</h3></a></li>

       {% endif %}

   {% endfor %}

   <form action="{% url 'polls:result'%}" method="post">

       {% csrf_token %}

   <input type="submit" class="search-submit" value="Результат" />

   </form>

   <form action="{% url 'polls:clear'%}" method="post">

       {% csrf_token %}

   <input type="submit" class="search-submit" value="Сброс"/>

   </form>

   </ul>

{% else %}

   <h1>Нет вопросов</h1>

{% endif %}

</body>

</div>

Шаблон для отображения вопроса и вариантов ответа к нему храниться в файле detail.html

<meta charset="UTF-8">

<title>Вопросник по дисциплине "Информатика</title>

{% load staticfiles %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

<p class="top">Вопросник по дисциплине "Информатика"</p>

<body>

<div>

<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">

{% csrf_token %}

{% for choice in question.choice_set.all %}

   <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />

   <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />

{% endfor %}<br>

<input type="submit"  class="search-submit"  value="OK" size="25"/>

</form>

</div>

</body>

Шаблон для отображения результата тестирования храниться в файле results.html

<meta charset="UTF-8">

{% load staticfiles %}

<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}" />

<p class="top">Вопросник по дисциплине "Информатика"</p>

<div>

<body>

{% for Result in object_list %}

  <h3>Колличество вопросов:&nbsp; {{ Result.count_vop }}</h3>

  <h3>Колличество ответов:&nbsp;{{ Result.count_otv }}</h3>

  <h3>Правильных ответов:&nbsp;{{ Result.count_pr }}</h3>

{% endfor %}

<a href="{% url 'polls:index' %}">К списку вопросов</a>

</body>

</div>

3. Технологическая часть

3.1 Руководство пользователя

Чтобы попасть на страницу теста, пользователю необходимо запустить сервер Django. После этого открыть любой браузер и в адресной строке написать адрес http://127.0.0.1:8000/test/

После ввода адреса, откроется страница c вопросами теста (рис. 2).

Рис.2. Страница вопросов

 После выбора вопроса, пользователю открывается страница с вариантами ответов к выбранному вопросу (рис.3).

Рис.3. Страница выбора ответа

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

 По нажатию на кнопку «Результат», пользователь может в любой момент посмотреть результаты тестирования (рис.4).

Рис.4. Страница результатов тестирования

По нажатию на кнопку «Сброс», сбрасываются все результаты теста и пользователь может пройти тест заново.

3.2 Аппаратные и программные требования

 Для просмотра сайта предъявляются следующие аппаратные требования:

  1.  Процессор с тактовой частотой не ниже 300 MHz;
  2.  Видеокарта с объёмом памяти не менее 32 Mb;
  3.  Оперативная память объёмом не менее 32 Mb;
  4.  Мышь.

Программные требования, предъявляемые к системе:

  1.  Наличие фреймворка Django;
  2.  Наличие любого web-браузера;

Заключение

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

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

Список литературы

1. Философия Django. Документация Django. - http://djbook.ru/rel1.6/misc/design-philosophies.html

2. Модели и особенности работы с ними в фреймворке Django. Документация Django. - http://djbook.ru/rel1.6/topics/db/models.html

3. Поля и особенности работы с ними в Django-моделях. Документация Django. - http://djbook.ru/rel1.6/topics/db/models.html#fields

4. Особенности работы с реляционными базами данных в Django. Документация Django. - http://djbook.ru/rel1.6/topics/db/models.html

5. Использование и значение URL в Django-проектах. Документация Django. - http://djbook.ru/rel1.6/topics/http/urls.html

6. Методика защиты Django-сайтов. Документация Django. - http://djbook.ru/rel1.6/topics/security.html


 

А также другие работы, которые могут Вас заинтересовать

50879. Парольная защита. Исследование программных аспектов парольной защиты 148 KB
  Исследовать зависимость длины пароля при фиксированных значениях от вероятности подбора пароля для заданных значений. Результаты работы предоставить в виде отчета: а краткое содержание последовательного порядка выполненных работ б по результатам решения задач построить график зависимостей S = fP проанализировать полученные зависимости и сформулировать выводы о том каким образом величина вероятности угадывания подбора пароля влияет на параметры: 1 длину пароля; 2 время жизни пароля при заданных значениях длины пароля и времени...
50880. Интерактивные элементы. Action Script 365 KB
  Кнопки Основное отличие кнопок состоит в том что они предназначены для реагирования на действия пользователя например нажатия на саму кнопку ее клавишный аналог или активную область в фильме. Timeline кнопки содержит всего четыре кадра: Up – обычное состояние кнопки. Over– изменение кнопки при нахождении над ней мыши. Если у вас будет несколько одинаковых кнопок достаточно создать только один образец кнопки накладывая на него необходимые надписи меняя цвет или размер экземпляров.
50881. Программирование в Delphi. Разработка программ с ветвлением 796.5 KB
  Например: Величина сопротивления равна нулю Ответ правильный Сумма покупки больше 300 рублей В программе условие это выражение логического типа Boolen которое может принимать одно из двух значений: True истина или Flse ложь. Операторы сравнения Оператор Описание Результат сравнения Больше True если первый операнд больше второго иначе Flse Меньше True если первый операнд меньше второго иначе Flse = Равно True если первый операнд равен второму иначе Flse Не равно True если первый операнд не равен второму иначе Flse =...
50882. Анимация во Flash mx 2004 9.29 MB
  Практическая часть Задание: Ознакомьтесь с ключевыми принципами работы с анимацией во FLSH MX 2004. Анимация и интерактивные мультимедийные приложения вот то что привлекает к Flsh MX 2004 большинство пользователей. Если его нет когда вы только запустили программу либо закрыли проект Timeline Временная шкала не будет отображена в рабочем окне Flsh.
50883. Временные характеристики линейных систем управления. Определение реакции системы на произвольное входное воздействие 237.5 KB
  Определение свободного и вынужденного движения системы. при ненулевых начальных условиях Cхема моделирования системы с использованием пакета Simulink Осциллограмма системы. Определить с использованием пакета Simulink реакцию системы с передаточной функцией при подаче на вход сигнала: 1. Определение реакции системы на сигнал сложной формы.
50884. Программирование в Delphi. Разработка программ со сложным ветвлением 737 KB
  Даны три стороны а в с. Если все стороны равны то Равносторонний если две стороны равны Равнобедренный если стороны не равны Разносторонний Даны три числа найти сумму отрицательных из них Даны три числа возвести в квадрат те из них значения которых не отрицательны а затем сложить. Даны три числа найти произведение тех чисел значение которых положительны Составить программу определяющую уровень облученности студента низкий средний достаточный высокий по его среднему балу Даны три числа вычислите корень...
50885. Анимация движения во FLASH MX 2004. Движение по маршруту. Программная анимация 4.82 MB
  Анимация трансформации формы (морфинг). Этот вид анимации следует реализовывать тогда, когда один графический объект мультфильма должен плавно видоизмениться в другой. Вы задаете только начальную и конечную формы, а промежуточные кадры будут заполнены автоматически.
50886. Программирование в Delphi. Разработка циклических программ. Цикл с пошаговой сменой аргумента 5.46 MB
  Научиться составлять и реализовывать программы решения задач с использованием оператора цикла с пошаговой сменой аргумента FOR. Эта последовательность действий образует тело цикла. В теле цикла используется переменная которая при каждом повторении тела цикла меняется и определяет число повторений цикла. Такая переменная называется параметром цикла.