Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка сайта БАНКА «Sbermoney

Содержание:

Введение

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

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

- разработать страницы сайта на основе HTML кода;

- спроектировать таблицы стилей CSS для применения их на страницах сайта;

- создать базу данных для сайта на основе SQLite3;

- создать код Python (Django framework) для работы с данными.

Техническое задание и выбор средств реализации.

Техническое задание.

Необходимо разработать сайт «SberMoney». Сайт должен быть выполнен, соблюдая следующие правила:

1) Общее количество разделов сайта должно быть не менее шести.

2) язык разметки сайта – HTML;

3) безошибочная работа, отображение в браузерах: InternetExplorer, MozillaFirefox, Opera (Chrome, Safari);

4) наличие страницы "Карта сайта";

5) все страницы сайта должны быть наполнены осмысленной информацией;

Задачи сайта SberMoney:

  • Предоставление информации по доступным вкладам
  • Контактная информация
  • Ипотечные займы
  • Справочная информация по платежам и переводам
  • Микрокредиты
  • Для начинающих предпринимателей

Средства реализации.

Выбор средств был прост это коды html, css, python(Django framework). Базой данных служит файлы с данными.

HTML (HyperText Markup Language) — язык разметки (маркировки) гипертекста. Гипертекст своим развитием обязан интернету, хоть и создавался он совсем не для того. HTML дает возможность производить переход от одной части текста к другой, и, что замечательно, эти части могут храниться на совершенно разных компьютерах.

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

CSS (Cascading Style Sheets) — язык таблиц стилей, который позволяет прикреплять стиль (например, шрифты и цвет) к структурированным документам (например, документам HTML и приложениям XML). Обычно CSS-стили используются для создания и изменения стиля элементов веб-страниц и пользовательских интерфейсов, написанных на языках HTML и XHTML, но также могут быть применены к любому виду XML-документа, в том числе XML, SVG и XUL. Отделяя стиль представления документов от содержимого документов, CSS упрощает создание веб-страниц и обслуживание сайтов. CSS поддерживает таблицы стилей для конкретных носителей, поэтому авторы могут адаптировать представление своих документов к визуальным браузерам, слуховым устройствам, принтерам, брайлевским устройствам, карманным устройствам и т.д.

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

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

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

Django — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.

Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (англ. Don't repeat yourself)

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

Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.

.

Описание модулей серверной части программы и их взаимодействие.

В работе с северной частью проведено с использованием python c SQLite. Работа с БД осуществляется при помощи следующими командой который отображает информацию на странице сайта c БД SQLite. Большинство функции в python берет на себя фреймворк Django. В Django встроена аутентификация, авторизация и регистрация пользователя, а также админ панель.

Взаимодействие с БД SQLite:

DATABASES = {

'default': {

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

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

}

}

Система регистрации в Django осуществляется следующим образом:

def register(request):

if request.method == 'POST':

form = RegistrationForm(request.POST)

if form.is_valid():

form.save()

return redirect('/')

else:

form = RegistrationForm()

return render(request, 'register.html', {'form': form})

После этого нужно создать форму, где нужно указать поля для регистрации в виде:

class RegistrationForm(UserCreationForm):

email = forms.EmailField(required=True)

class Meta:

model = User

fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')

def save(self, commit=True):

user = super(RegistrationForm, self).save(commit=False)

user.firstname = self.cleaned_data['first_name']

user.last_name = self.cleaned_data['last_name']

user.email = self.cleaned_data['email']

if commit:

user.save()

return user

При помощи Django проводится проверка пользователей. Дальнейший код проводит проверку логинов и паролей.

Пример проверки логинов и паролей:

def signin (request):

username = request.POST['username']

password = request.POST['password']

user = authenticate(request, username=username, password=password)

if user is not None:

login(request, user)

return render(request, 'signin.html')

После входа идет проверка на права доступа. Панель администратора в Django встроенный. Чтобы активировать панель администратора нужно написать следующий код:

from django.contrib import admin

from django.urls import path, include

urlpatterns = [

path('admin/', admin.site.urls),

]

Описание структуры базы данных и ее функций.

База данных в работе является табличной структурой. В базе данных присутствуют таблицы «main_moviepremiere», «main_movie», «main_movie_picture», «main_movieimages», «main_news» рис. 1

Рис. 1 Взаимосвязь базы данных с сайтом.

В БД SQLite сохраняются данные пользователей. При регистрации они нужны для в хода в систему пользователей. Каждый новый пользовать добавляется с новой строки. В таб. 1 краткое пояснение.

Таблица 1

Сохранения данных пользователей в базу данных

Наименования

Расшифровка

Разрешения символов

Username

Логин (имя пользователя)

Все символы

Password

Пароль логина

Все символы

Email

Электронный почтовый адрес

Email@mail.com

First Name

Имя пользователя

Все буквы

Last Name

Фамилия пользователя

Все буквы

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

Описание структуры клиентской части.

Описание интерфейса «Обычный пользователь».

Для посетителей сайта есть доступ на сайт с осмотром информации по банку рис. 2.

Рис. 2 Главная страница сайта

Для посетителей есть возможность восстановить пароль (рис. 3). Если уже зарегистрированы, то можно войти на сайт (рис. 4). В разделе «Контактная информация» можно узнать контактный телефон банка, а также расположение отделений банка (рис. 5).

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

Рис. 3 Восстановление пароля пользователя.

Рис. 4 Вход пользователей.

Рис. 5 Контактная информация.

Рис. 6 Страница с доступными опциями вкладов и кредитов

Описание интерфейса «Администратор».

Для администратора есть отдельная панель (рис. 7) где администратор может изменить записи на странице (рис. 8), а после сохранить изменения тем самым изменив их на сайте.

Рис. 7 Панель «Администратор»

Снимок

Рис.8 Форма редактирования «Панель администратора»

Снимок

Инструкция пользователя.

Для посетителей сайта можно использовать меню для поиска нужной информации:

«Главная» -главная страница информации;

«Вклады и кредиты» -каталог доступных вариантов вкладов и кредитов;

«Акции» -информации о новых и предстоящих акциях;

«Контактная информация» - информация о банке;

«Вход» - вход для пользователей.

«Регистрация» - регистрация новых пользователей.

Заключение

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

. Оценивая проделанную работу, можно сделать следующие выводы:

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

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

  • язык разметки гипертекста html и css;
  • язык программирования python;
  • Django фреймворк;

Список использованной литературы

  1. Доусон М. Программируем на Python. – СПб.: Питер, 2014. – 416 с.
  2. Лутц М. Изучаем Python, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 1280 с.
  3. Лутц М. Программирование на Python, том I, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 992 с.
  4. Лутц М. Программирование на Python, том II, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 992 с.
  5. Прохоренок Н.А. Python 3 и PyQt. Разработка приложений. – СПб.: БХВ-Петербург, 2012. – 704 с.
  6. Вабищевич П. Н. Численные методы. Вычислительный практикум. – – 320 c.
  7. Пилгрим Марк. Погружение в Python 3 (Dive into Python 3 на русском)
  8. Прохоренок Н.А. Самое необходимое. — СПб.: БХВ-Петербург, 2011. — 416 с.
  9. Хахаев И.А. Практикум по алгоритмизации и программированию на Python. – М.: Альт Линукс, 2010. — 126 с. (Библиотека ALT Linux).
  10. Чаплыгин А.Н. Учимся программировать вместе с питоном.
  11. Мейер, Б. Инструменты, алгоритмы и структуры данных / Б. Мейер. - 2-е изд., испр. - М. : Национальный Открытый Университет «ИНТУИТ», 2016. Allen Downey – ThinkPython+Kart[Python_3.2]
  12. https://www.djangoproject.com/
  13. https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django
  14. https://developer.mozilla.org/en-US/docs/Web/HTML
  15. https://html5book.ru/

Приложения

Код html

Base.html:

{% load static %}

<!DOCTYPE html>

<html>

<head>

{% block head %}

{% endblock %}

<meta charset="UTF-8">

<title>Releases</title>

<link rel="stylesheet" href="{% static 'css/base-style.css' %}">

</head>

<body>

<header>

<a href="{% url 'release' %}" class="logo-1"><h1 class="logo">A Локон</h1></a>

{% if user.is_authenticated %}

<ul>

<li><a href="{% url 'release' %}">Вклад</a></li>

<li><a href="{% url 'schedule' %}">О банке</a></li>

<li><a href="{% url 'news' %}">Ипотека</a></li>

<li><a href="{% url 'contacts' %}">Контакты</a></li>

<a href="{% url 'profile' %}"><button class="register-but">Профиль</button></a>

<a href="{% url 'logout'%}"><button class="signin-but"> Выйти </button></a>

</ul>

{% else %}

<ul>

<li><a href="{% url 'release' %}">Вклад</a></li>

<li><a href="{% url 'schedule' %}">О банке</a></li>

<li><a href="{% url 'news' %}">Ипотека</a></li>

<li><a href="{% url 'contacts' %}">Контакты</a></li>

<a href="{% url 'register' %}"><button class="register-but">Регистрация</button></a>

<a href="{% url 'login' %}"><button class="signin-but"> Войти </button></a>

</ul>

{% endif %}

</header>

<!-- <main> -->

{% block body %}

{% endblock %}

<!-- </main> -->

<footer>

<div class="flex-footer">

<p class="footer-logo">SberMoney</p>

<div class="links">

<a href="{% url 'about_us' %}" class="footer"><p class="footer-link">О Нас</p></a>

<a href="{% url 'ads' %}" class="footer"><p class="footer-link">Реклама</p></a>

<a href="{% url 'jobs' %}" class="footer"><p class="footer-link">Вакансии</p></a>

<a href="{% url 'contacts' %}" class="footer"><p class="footer-link">Контакты</p></a>

</div>

<div class="social-media">

<p class="footer-link">Следите за новостями банка</p>

<img class="logos" src="{% static 'images/instagram.png' %}" alt="">

<img class="logos" src="{% static 'images/vk.png' %}" alt="">

<img class="logos" src="{% static 'images/twitter.png' %}" alt="">

<img src="{% static 'images/facebook.png' %}" alt="" class="logos">

<p class="author">Создание и разработка сайта — Ivanov Denis</p>

</div>

</div>

</footer>

</body>

</html>

main-page.html:

{% extends 'base.html' %}

{% load static %}

{% block head %}

<link rel="stylesheet" href="{% static 'css/style-main-page.css' %}">

{% endblock %}

{% block body %}

<main>

<h1 class="bank">Банки</h1>

<div class="list-bank">

{% for m in banks %}

<div class="flex-banks">

<a href="{% url 'movie' m.bank_name %}"> <img src="{{ m.poster.url }}" alt="" class="first-bank-image"></a>

</div>

{% endfor %}

</div>

<!--<div class="mailing-list">-->

<!--<form action="">-->

<!--<p class="text-mailing-list">Присоединяйтесь к списку рассылки, чтобы оставаться с нами</p>-->

<!--<input class="input-mail" type="text" name="mail">-->

<!--<input class="mailing-button" type="button" value="Отправить"> -->

<!--</form>-->

<!--</div>-->

</main>

{% endblock %}

News.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-news.css' %}">
{% endblock %}
{% block body %}
<main class="news">
<h1 class="news-header">Событие</h1>
{% for n in news %}
<div class="news-1">
<div class="part-1">
<img src="{{ n.image.url }}" alt="" class="news-image-1">
</div>
<div class="part-2">
<h5 class="little-header">Событие</h5><hr class="line-1">
<h2 class="news-info">{{ n.title }}</h2>
<hr class="line-2">
<p class="news-text">{{ n.info }}</p>
<a href="{% url 'news_detail' n.title %}"><button class="button-details">Подробнее</button></a>
</div>
</div>
{% endfor %}


</main>

{% endblock %}

News-detail.html:

{% extends 'base.html' %}
{% load static %}

{% block head %}
<link rel="stylesheet" href="{% static 'css/style-news_detail.css' %}">
{% endblock %}

{% block body %}
<!--{% if detail %}-->
<main>

<h1 class="title">{{ detail.title }}</h1>
<hr>
<p class="text-detail">{{ detail.main_text }}</p>

</main>
<!--{% endif %}-->
{% endblock %}

Profile.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-profile.css' %}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
{% endblock %}

{% block body %}
<main>
<div class="container">
<h1>Профиль</h1>
<p>Имя пользователя: {{ user }}</p>
<p>Имя: {{ user.first_name }}</p>
<p>Фамилия: {{ user.last_name }}</p>
<p>Почта: {{ user.email }}</p>
</div>
</main>
{% endblock %}

Register.html:

{% extends 'base.html' %}
{% load static %}

{% block head %}
<link rel="stylesheet" href="{% static 'css/style-register.css' %}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
{% endblock %}

{% block body %}
<main>
<form method="POST" class="container">
<h1 class="header-little">Создать Аккаунт</h1>
{% csrf_token %}

{{ form.as_p }}

<input type="submit" class="save-button" value="Сохранить">


</form>

</main>
{% endblock %}

Signin.html:

{% extends 'base.html' %}

{% load static %}

{% block head %}

<link rel="stylesheet" href="{% static 'css/style-signin.css' %}">

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">

{% endblock %}

{% block body %}

<main>

<div class="signin">

<h1 class="login-text">Войти</h1>

<form action="" class="container" method="POST">

{% csrf_token %}

{{ form.as_p }}

<input class="btn btn-dark" type="submit" value="Войти">

</form>

</div>

</main>

{% endblock %}

Schedule.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-schedule.css' %}">
{% endblock %}

{% block body %}
<main class="schedule-main">
<h1 class="schedule">О банке</h1>

</div>
<hr>
<div class="schedule-movies">
{% for bank in banks %}
<div class="bank-1">
<a href="{% url bank bank.bank_name %}"> <img src="{{ movie.poster.url }}" alt="" class="poster"></a>
<div class="bank-1-1">
<a class="bank-name-link" href="{% url 'bank' bank.bank_name %}"> <h3 class="bank-name">{{ bank.bank_name }}</h3></a>
<p class="genre">{{ bank.age }} {{ movie.genre }} </p>

<ul class="when">
{% for premiere in premieres %}
<li class="quality">{{ premiere.quality }}</li>

<li class="times"><p class="time">{{ premiere.date | date:"D d M Y" }}</p> <p>от {{ premiere.cost }}р.</p></li>
<!--<li class="times"><p class="time">15:30</p> <p>от 350р.</p></li>-->
<!--<li class="times"><p class="time">15:30</p> <p>от 350р.</p></li>-->

{% endfor %}
</ul>
</div>
</div>
{% endfor %}

</div>

</main>

{% endblock %}

bank.html:

{% extends 'base.html' %}
{% load static %}
{% load embed_video_tags %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-movie.css' %}">
{% endblock %}

{% block body %}
<main class="main-movie">
<div class="flex-movie">
<div class="flex-1">
<img src="{{ film.poster.url }}" alt="" class="movie-poster">
<p class="movie-age">{{ film.age }}</p>
<h1>{{ film.movie_name }}</h1>
<p class="movie-info-header">Вакансии</p>
<p class="movie-info">{{ film.date_release | date:"d M Y" }}</p>
<p class="movie-info-header">Вклады</p>
<p class="movie-info">{{ film.genre }}</p>
<p class="movie-info-header">Контакты</p>
<p class="movie-info">{{ film.producer }}</p>


<p class="movie-info-header">Стоимость</p>
<p class="movie-info">{{ film.duration }} мин.</p>
<p class="about-movie">{{ film.about }}</p>
</div>

<div class="flex-2">
<div class="bank-week">

</div>

<h3 class="name-of-bank">SberMoney</h3>
<p class="address">м. Павелецкая</p>
<ul class="when">
{% for premiere in premieres %}
<li class="quality">{{ premiere.quality }}</li>
<li class="times"><p class="time">{{ premiere.date | date:"D d M Y" }}</p> <p>от {{ premiere.cost }}р.</p></li>

{% endfor %}
</ul>
<a href="{% url 'schedule' %}" class="all-schedule" id="all-sched">ВСЕ О ВКЛАДАХ</a>
<div class="movie-trailer">
<iframe width="760" height="456" src="{{ film.video }}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div>
<div class="flex-shots">
<p class="screenshots-header">Наши кадры</p>
{% for pic in film.pictures.all %}
<img src="{{ pic.images.url }}" alt="" class="screenshots">
{% endfor %}
</div>
</div>
</div>
</main>
{% endblock %}

About-us.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-about-us.css' %}">
{% endblock %}

{% block body %}
<main>
<h1 class="bank">О нас</h1>


</main>
{% endblock %}

Ads.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-about-us.css' %}">
{% endblock %}

{% block body %}
<main>
<h1 class="bank">Размещение рекламы</h1>
<p>


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

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



Ознакомтесь с нашими банками перейдя по ссылке.

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

- эскалаторные и вестибюльные щиты в метрополитене у выходов к офисам банков.
- Размещение рекламы в лайтбоксах сити-формата в фойе
- Размещение рекламных стоек, ролл-апов в фойе
- реклама на стикерах в вагонах метр.
- Размещение рекламы на столиках в барах, кафе.
По вопросам размещения рекламы и просчета рекламных кампаний, обращайтесь в Коммерческий департамент: (495) 711-50-55 или на SberMoney@bank.ru
</p>

</main>
{% endblock %}

Contacts.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-contacts.css' %}">
{% endblock %}

{% block body %}
<main>
<div class="center-elements">
<h1 class="movies">Контакты</h1>
<img src="{% static 'images/map.png' %}" alt="" class="map-image">
</div>

<div class="flex">
<div class="part-1">
<div class="info">
<a href="#"><p class="phone-number">+7 (495) 771-70-70</p></a>

</div>
<div class="info">
<a href="#"><p class="phone-number">+(495) 711-50-55 </p></a>
Отдел маркетинга и PR
</div>
<div class="info">
<a href="#"><p class="phone-number">+7(495) 711-50-55 p></a>
Отдел кадров
</div>
<div class="info">
<a href="#"><p class="phone-number">+ 7 (495) 711-50-55 (103) </p></a>
Поддержка бонусной программы
</div>
<div class="info">
<a href="#"><p class="phone-number">+7 (495) 785-17-03</p></a>
По вопросам электронных переводов
</div>
</div>
<div class="part-2">
<div class="info">
<a href="#"><p class="phone-number"> SberMoney@bank.ru
</p></a>
По работе банка
</div>
<div class="info">
<a href="#"><p class="phone-number"> SberMoney@bank.ru
</p></a>
По вопросам сотрудничества
</div>
<div class="info">
<a href="#"><p class="phone-number"> SberMoney@bank.ru
</p></a>
Департамент по персоналу
</div>
<div class="info">
<a href="#"><p class="phone-number"> SberMoney@bank.ru
</p></a>
По вопросам работы сайта и бонусной программы
</div>
<div class="info">
<a href="#"><p class="phone-number"> SberMoney@bank.ru
</p></a>
Поддержка по электронным переводам, а также по <br> телефону: +7(495)785-17-03
</div>
</div>
<div class="text-bottom">
<h1>Управляющая компания <br> " Локон "</h1>
<p>125445, г. Москва ул. Правобережная д. 1«Б», <br> ТРЦ «Ленинградский», тел.: +7 (495)771-70-1</p>
</div>
</div>

</main>
{% endblock %}

Jobs.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-about-us.css' %}">
{% endblock %}

{% block body %}
<main>
<h1 class="movies">Вакансии</h1>
<p>Сотрудники компании SberMoney и наших банков- это дружный и сплоченный коллектив и главная его задача — обеспечить посетителям нашего банка максимум комфорта.

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

Дополнительные преимущества
- Гибкий график работы
- Бесплатное питание
- Работа в стабильной компании
- Перспективы карьерного роста

Вам достаточно заполнить анкету или отправить резюме по адресу: Sberabota@bank.ru



</p>

</main>

{% endblock %}

Logout.html:

{% extends 'base.html' %}
{% load static %}
{% block head %}
<link rel="stylesheet" href="{% static 'css/style-about-us.css' %}">
{% endblock %}

{% block body %}
<main>
<h1 class="movies">Вы вышли с аккаунта!</h1>
<p>Спасибо за посещение!</p>
</main>
{% endblock %}

Python(Django) код

Admin.py:

from django.contrib import admin
from .models import bank, Users, bankPremiere, News, bankImages

class bankPremiereAdmin(admin.ModelAdmin):
list_display = ['day', 'time', 'bank','quality', 'cost']

class bankAdmin(admin.ModelAdmin):
list_display = [‘bank_name', 'date_release', 'duration', 'country', 'genre', 'age']

class bankImagesAdmin(admin.ModelAdmin):
list_display = ['title', 'images']


admin.site.register(Movie, BankAdmin)
admin.site.register(Users)
admin.site.register(BankPremiere, BankPremiereAdmin)
admin.site.register(News)
admin.site.register(BankImages)

cinema/urls.py:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
path('admin/', admin.site.urls),
path('', include('main.urls')),
]

forms.py:

from django.forms import ModelForm, Textarea
from .models import Users
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm
from django import forms

class RegistrationForm(UserCreationForm):
email = forms.EmailField(required=True)

class Meta:
model = User
fields = ('username', 'first_name', 'last_name', 'email', 'password1', 'password2')

def save(self, commit=True):
user = super(RegistrationForm, self).save(commit=False)
user.firstname = self.cleaned_data['first_name']
user.last_name = self.cleaned_data['last_name']
user.email = self.cleaned_data['email']

if commit:
user.save()

return user

class UsersForm(ModelForm):
class Meta:
model = Users
fields = ('first_name', 'last_name', 'username', 'email', 'password')
# widgets = {
# 'first_name': Textarea(attrs={'font-size':200})
# }

models.py:

from django.db import models
from embed_video.fields import EmbedVideoField


class Users(models.Model):
first_name = models.CharField(max_length=30, blank=False, verbose_name="Имя")
last_name = models.CharField(max_length=50, blank=False, verbose_name="Фамилия")
username = models.CharField(max_length=100, blank=False, verbose_name="Имя Пользователя")
email = models.CharField(max_length=250, blank=False, unique=True, verbose_name="Почта")
password = models.CharField(max_length=100, blank=False, verbose_name="Пароль")

class Meta:
verbose_name = 'Пользователь'
verbose_name_plural = 'Пользователи'
def __str__(self):
return self.username


class MovieImages(models.Model):
images = models.ImageField(upload_to='media/')

class Meta:
verbose_name = 'Кадр'
verbose_name_plural = 'Кадры'

def __str__(self):
return self.images.name


class Movie(models.Model):

genres = [
('horror', 'Ужасы'),
('fantasy', 'Фэнтези'),
('drama', 'Драма'),
('comedy', 'Комедия'),
('action', 'Экшн'),
]

ages = [
('3+', '3+'),
('7+', '7+'),
('13+', '13+'),
('18+', '18+'),
('21+', '21+'),
]

movie_name = models.CharField(max_length=250, blank=False, verbose_name="Название вклада")
poster = models.ImageField(upload_to='media/', blank=False, verbose_name=’Тип’)
date_release = models.DateTimeField(auto_now=False, auto_now_add=False, blank=False, verbose_name='Дата')
about = models.TextField(verbose_name='О банке', blank=False)
duration = models.IntegerField(verbose_name='Расчет')
country = models.CharField(max_length=200, blank=False, verbose_name='Партнеры')
genre = models.CharField(max_length=30, choices=genres, default=None, blank=False, verbose_name=’Предложения')
actors = models.TextField(blank=False, verbose_name='Доход')
producer = models.CharField(max_length=250, blank=False, verbose_name='Страхование')
age = models.CharField(max_length=2, choices=ages, default=None, blank=False, verbose_name='Возраст')
video = EmbedVideoField(blank=True, verbose_name=" ")
pictures = models.ManyToManyField(MovieImages)

class Meta:
verbose_name = 'Счета'
verbose_name_plural = 'Вклады'

def __str__(self):
return self.movie_name

class BankPremiere(models.Model):
days = [
('Понедельник', 'Понедельник'),
('Вторник', 'Вторник'),
('Среда', 'Среда'),
('Четверг', 'Четверг'),
('Пятница', 'Пятница'),
('Суббота', 'Суббота'),
('Воскресенье', 'Воскресенье'),
]

qty_2d = '2D'
qualitys = [
(qty_2d, '2D'),
('3D', '3D')
]

date = models.DateField(blank=False, auto_now_add=False, auto_now=False, verbose_name='Дата премьеры')
day = models.CharField(max_length=20, choices=days, default=None, verbose_name='День недели')
time = models.DateTimeField(auto_now=False, auto_now_add=False, blank=False, verbose_name='Время премьеры')
quality = models.CharField(max_length=5, choices=qualitys, default=qty_2d, verbose_name='Качество')
cost = models.DecimalField(max_digits=4, decimal_places=0, verbose_name='Цена')
movie = models.ForeignKey(Movie, on_delete=models.CASCADE)

class Meta:
verbose_name = 'Премьера'
verbose_name_plural = 'Премьеры'

def __str__(self):
return self.day

class News(models.Model):
title = models.CharField(max_length=250, blank=False)
image = models.ImageField(upload_to='media/', blank=False)
info = models.TextField()
main_text = models.TextField()

class Meta:
verbose_name = 'Новость'
verbose_name_plural = 'Новости'

def __str__(self):
return self.title

urls.py:

from django.urls import path
from . import views
from django.conf.urls.static import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf import settings
from django.contrib.auth import login, logout
from django.contrib.auth.views import LoginView, LogoutView

urlpatterns = [
path('', views.release, name='release'),
path('movie/<str:movie_name>', views.movie, name='movie'),
path('news', views.news, name='news'),
path('schedule', views.schedule, name='schedule'),
path('signin', views.signin, name='signin'),
path('contacts', views.contacts, name='contacts'),
path('about-us', views.about_us, name='about_us'),
path('ads', views.ads, name='ads'),
path('jobs', views.jobs, name='jobs'),
path('news_detail/<str:title>', views.news_detail, name='news_detail'),
path('profile', views.profile, name='profile'),
path('register', views.register, name='register'),
path('login/', LoginView.as_view(template_name='signin.html'), name="login"),
path('logout/', LogoutView.as_view(template_name='logout.html'), name='logout')

# path('login', login, {'template_name': 'signin.html'}),
# path('logout', logout, {'template_name': 'logout.html'}),



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

views.py:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import UsersForm
from django.contrib.auth.forms import UserCreationForm
from .models import News, Movie, MoviePremiere
from .forms import RegistrationForm


def release(request):
template_name = 'main-page.html'
movies = Movie.objects.all()

args = {
'bank':bank

}

return render(request, template_name, args)

def movie(request, bank_name):
template_name = bank.html'
film = Bank.objects.get(movie_name=movie_name)
premieres = BankPremiere.objects.all()


args = {'bank':bank, 'premieres':premieres}

return render(request, template_name, args)

def news(request):
template_name = 'news.html'
news = News.objects.all()

args = {
'news': news
}

return render(request, template_name, args)

def contacts(request):
template_name = 'contacts.html'
return render(request, template_name)

def about_us(request):
template_name = 'about-us.html'
return render(request, template_name)

def ads(request):
template_name = 'ads.html'
return render(request, template_name)

def jobs(request):
template_name = 'jobs.html'
return render(request, template_name)

def profile(request):
template_name = 'profile.html'
return render(request,template_name)

def schedule(request):
template_name = 'schedule.html'
schedule_movie = Bank.objects.all()
premiere = BankPremiere.objects.all()

args = {'bank': schedule_movie, 'premieres': premiere}

return render(request, template_name, args)

def news_detail(request, title):
template_name = 'news-detail.html'

detail = News.objects.get(title=title)

args = {
'detail': detail
}

return render(request, template_name, args)

def signin(request):
return render(request, 'signin.html')

def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
form.save()
return redirect('/')
else:
form = RegistrationForm()
return render(request, 'register.html', {'form': form})