Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# Python
*.pyc
*.pyo
__pycache__/

# Django
*.log
*.pot
*.pyc
*.pyo
*.sqlite3

# Environments
.env
.venv/

# Media
/media/

# Static files
/staticfiles/

# VSCode
.vscode/

# MacOS
.DS_Store

# Windows
Thumbs.db

# IDEs
.idea/
*.iml

# Node
node_modules/
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# Отчёт по лабораторным работам 7-8.

**Тема:** Создание веб-приложения на Django

**Студент:** Шевченко Кристина Валерьевна

**Группа:** К3320



## Цель работы:
Создать веб-приложение на Django с тремя страницами:
1. Главная страница.
2. Страница "О разработке".
3. Страница "Обратная связь".

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

---

## Выполненные задачи:

### 1. Создание проекта и приложения
- Создан проект Django с именем [`myproject`](myproject ).
- Создано приложение [`main`](main) для реализации функционала.

### 2. Настройка базового шаблона
- Создан базовый шаблон `base.html`, содержащий общие элементы:
- Хедер с навигацией (ссылки на главную страницу, страницу "О разработке" и "Обратная связь").
- Футер с копирайтом, контактной информацией и ссылками на страницы.
- Подключены стили через файл `styles.css`.

### 3. Реализация страниц
- **Главная страница**:
- Отображает приветственное сообщение и список достопримечательностей Байкала.
- Использует шаблон `index.html`.
- **Страница "О разработке"**:
- Содержит информацию о проекте, разработчике, используемых технологиях и полезные ссылки.
- Использует шаблон `about.html`.
- **Страница "Обратная связь"**:
- Содержит форму обратной связи с полями:
- Имя.
- Email.
- Сообщение.
- Реализована обработка данных формы и вывод сообщений об успешной отправке или ошибках.

### 4. Реализация формы обратной связи
- Создана форма `ContactForm` в файле `forms.py` с использованием Django Forms.
- Поля формы:
- `name` — имя пользователя.
- `email` — email пользователя.
- `message` — сообщение.
- Реализована обработка данных формы в представлении `contacts`:
- При успешной отправке выводится сообщение об успешной отправке.
- При ошибках отображаются соответствующие сообщения.


### 6. Работа с моделью
- Создана модель `Place` для хранения информации о достопримечательностях Байкала:
- Название.
- Описание.
- Изображение.
- Данные о достопримечательностях отображаются на главной странице.




---

## Используемые технологии:
- **Python 3.10**.
- **Django 5.2**.
- **HTML5 и CSS3**.
- **SQLite** для хранения данных.

---

## Результат:
В результате выполнения лабораторной работы создано веб-приложение с тремя страницами:
1. **Главная страница**:
- Отображает список достопримечательностей Байкала.
2. **Страница "О разработке"**:
- Содержит информацию о проекте, разработчике и используемых технологиях.
3. **Страница "Обратная связь"**:
- Содержит форму обратной связи с обработкой данных.

Приложение имеет общий хедер и футер, современный дизайн и удобный интерфейс.

---

## Вывод:
В ходе лабораторной работы были изучены и применены основные возможности Django:
- Работа с шаблонами.
- Создание форм и обработка данных.
- Использование моделей для хранения данных.

Проект успешно выполнен и соответствует требованиям задания.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

from django.contrib import admin
from .models import Place

@admin.register(Place)
class PlaceAdmin(admin.ModelAdmin):
list_display = ('name',)
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class MainConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'main'
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django import forms

class ContactForm(forms.Form):
name = forms.CharField(min_length=2, max_length=100, label='Имя', widget=forms.TextInput(attrs={'placeholder': 'Ваше имя', 'class': 'form-control valid'}))
email = forms.EmailField(label='Email', widget=forms.EmailInput(attrs={'placeholder': 'Ваш email', 'class': 'form-control valid'}))
message = forms.CharField(label='Сообщение', widget=forms.Textarea(attrs={'placeholder': 'Ваше сообщение', 'class': 'form-control valid'}))
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Generated by Django 5.2.1 on 2025-05-11 11:05

from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = [
]

operations = [
migrations.CreateModel(
name='Place',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=200, verbose_name='Название')),
('description', models.TextField(verbose_name='Описание')),
('image', models.ImageField(blank=True, null=True, upload_to='places/', verbose_name='Изображение')),
],
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from django.db import models


class Place(models.Model):
name = models.CharField(max_length=200, verbose_name="Название")
description = models.TextField(verbose_name="Описание")
image = models.ImageField(upload_to='places/', verbose_name="Изображение", blank=True, null=True)

def __str__(self):
return self.name
Loading