/
fgtrwt
/
Python_Django_Learn
Обзор
Документация
Войти
/
fgtrwt
/
Python_Django_Learn
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/blog/views.py
111 строк
4 KB
fgtrwt
upload files
19 авг 2025, 11:03
19 авг 2025, 11:03
959e66e
Код
Авторство
О чём код?
from datetime import date, datetime from blog.models import Post, Author from django.core.exceptions import ValidationError from django.core.validators import validate_email from django.shortcuts import render, redirect from .models import Post def posts(request): all_posts = Post.objects.all() context = { 'title': 'Мой блог', 'posts': all_posts } return render(request, 'blog/posts.html', context) def create_post(request): # Получение данных из формы if request.method == "POST": # Извлекаем данные из POST-запроса title = request.POST.get("title") # Значение поля "title" text = request.POST.get("text") # Значение поля "text" author = request.user # Добавлено # Проверка на то что заполнены все поля if author and title and text: # Создаем новый пост в базе данных Post.objects.create( author=author, title=title, text=text ) # Перенаправляем пользователя на список постов return redirect("posts") # Если все хорошо то # Делаем перенаправление на страницу с постами # Здесь можно прикрутить обработку ошибок # Если запрос GET - показываем пустую форму return render(request, "blog/post_form.html") def authors(request): authors = Author.objects.all() context = { 'authors': authors } return render(request, 'blog/authors.html', context) def create_author(request): errors = [] if request.method == "POST": surname = request.POST.get("surname", "").strip() name = request.POST.get("name", "").strip() patronymic = request.POST.get("patronymic", "").strip() birth_date = request.POST.get("birth_date", "") email = request.POST.get("email", "").strip() age_str = request.POST.get("age", "") # Валидация данных if not surname: errors.append("Фамилия обязательна для заполнения") if not name: errors.append("Имя обязательно для заполнения") try: birth_date = datetime.strptime(birth_date, "%Y-%m-%d").date() if not birth_date: errors.append("Дата рождения обязательна") elif birth_date > date.today(): errors.append("Дата рождения не может быть в будущем") except ValueError: errors.append("Некорректный формат даты рождения") if not email: errors.append("Email обязателен") else: try: validate_email(email) except ValidationError: errors.append("Введите корректный email") try: age = int(age_str) if age_str else None if age is None: errors.append("Возраст обязателен") elif age <= 0: errors.append("Возраст должен быть положительным числом") except ValueError: errors.append("Возраст должен быть целым числом") if not errors: Author.objects.create( surname=surname, name=name, patronymic=patronymic if patronymic else None, birth_date=birth_date, email=email, age=age ) return redirect("authors") return render(request, "blog/create_author.html", { 'errors': errors, 'form_data': request.POST if request.method == "POST" else None })