DjangoWebProject1
227 строк · 8.3 Кб
1"""
2Definition of views.
3"""
4
5from django.shortcuts import render, redirect6from django.http import HttpRequest7from django.template import RequestContext8from datetime import datetime9from app.forms import RewievsForm10from django.contrib.auth.forms import UserCreationForm11from django.db import models12from .models import Blog13from .models import Comment # использование модели комментариев14from .forms import CommentForm # использование формы ввода комментария15from .forms import BlogForm16
17def home(request):18"""Renders the home page."""19assert isinstance(request, HttpRequest)20return render(21request,22'app/index.html',23{24'title':'Главная',25'year':datetime.now().year,26}27)28
29def contact(request):30"""Renders the contact page."""31assert isinstance(request, HttpRequest)32return render(33request,34'app/contact.html',35{36'title':'Контакты',37'message':'Ваша контактная страница.',38'year':datetime.now().year,39}40)41def blog(request):42"""Renders the blog page."""43
44assert isinstance(request, HttpRequest)45posts = Blog.objects.all() # запрос на выбор всех статей блога из модели46
47return render(48request,49'app/blog.html',50{51'title':'Блог',52'posts': posts, # передача списка статей в шаблон веб-страницы53'year':datetime.now().year,54}55
56)57
58def blogpost(request, parametr):59"""Renders the blogpost page."""60
61
62post_1 = Blog.objects.get(id=parametr) # запрос на выбор конкретной статьи по параметру63comments = Comment.objects.filter(post=parametr)64
65if request.method == "POST": # после отправки данных формы на сервер методом POST66form = CommentForm(request.POST)67if form.is_valid():68comment_f = form.save(commit=False)69comment_f.author = request.user # добавляем (так как этого поля нет в форме) в модель Комментария (Comment) в поле автор авторизованного пользователя70comment_f.date = datetime.now() # добавляем в модель Комментария (Comment) текущую дату71comment_f.post = Blog.objects.get(id=parametr) # добавляем в модель Комментария (Comment) статью, для которой данный комментарий72comment_f.save() # сохраняем изменения после добавления полей73
74return redirect('blogpost', parametr=post_1.id) # переадресация на ту же страницу статьи после отправки комментария75
76else:77form = CommentForm() # создание формы для ввода комментария78assert isinstance(request, HttpRequest)79return render(80request,81'app/blogpost.html',82{83'title':'Cтатья',84'post_1': post_1, # передача конкретной статьи в шаблон веб-страницы85'comments': comments, # передача всех комментариев к данной статье в шаблон веб-страницы86'form': form, # передача формы добавления комментария в шаблон веб-страницы87'year':datetime.now().year,88}89
90)91
92def about(request):93"""Renders the about page."""94assert isinstance(request, HttpRequest)95return render(96request,97'app/about.html',98{99'title':'Добро пожаловать!',100'message':'"От людей, для людей"',101'year':datetime.now().year,102}103)104
105def rewiev(request):106assert isinstance(request, HttpRequest)107data=None108opinion={'1':'Да','2':'Наверное',109'3':'Скорее нет','4':'Нет'}110
111preposition={'1':'8-14','2':'14-18',112'3':'18-25','4':'25-40',113'5':'40+'}114if request.method == 'POST':115form = RewievsForm(request.POST)116if form.is_valid():117data=dict()118data['name']=form.cleaned_data['name']119data['opinion']=opinion[form.cleaned_data['opinion'] ]120data['preposition']=preposition[form.cleaned_data['preposition'] ]121if (form.cleaned_data['flag']==True):122data['flag']='Да'123else:124data['flag']='Нет'125
126data['email']=form.cleaned_data['email']127data['positive']=form.cleaned_data['positive']128data['negative']=form.cleaned_data['negative']129form=None130else:131form = RewievsForm()132
133return render(134request,135'app/rewiev.html',136{137'title':'Отзыв',138'form':form,139'data':data,140'year':datetime.now().year,141
142}143)144
145
146def registration(request):147"""Renders the registration page."""148
149if request.method == "POST": # после отправки формы150regform = UserCreationForm(request.POST)151
152if regform.is_valid(): #валидация полей формы153reg_f = regform.save(commit=False) # не сохраняем автоматически данные формы154
155reg_f.is_staff = False # запрещен вход в административный раздел156
157reg_f.is_active = True # активный пользователь158
159reg_f.is_superuser = False # не является суперпользователем160
161reg_f.date_joined = datetime.now() # дата регистрации162
163reg_f.last_login = datetime.now() # дата последней авторизации164
165reg_f.save() # сохраняем изменения после добавления данных166
167return redirect('home') # переадресация на главную страницу после регистрации168
169else:170
171regform = UserCreationForm() # создание объекта формы для ввода данных нового пользователя172
173assert isinstance(request, HttpRequest)174
175return render(176request,177'app/registration.html',178{179'title':'Регистрация',180'regform': regform, # передача формы в шаблон веб-страницы181'year':datetime.now().year,182
183}184
185)186
187
188def newpost(request):189
190if request.method == "POST": # после отправки данных формы на сервер методом POST191blogform = BlogForm(request.POST, request.FILES)192if blogform.is_valid():193blog_f = blogform.save(commit=False)194blog_f.posted = datetime.now() # добавляем в модель Комментария (Comment) текущую дату195blog_f.save() # сохраняем изменения после добавления полей196
197return redirect('blog') # переадресация на ту же страницу статьи после отправки комментария198
199else:200blogform = BlogForm() # создание формы для ввода комментария201assert isinstance(request, HttpRequest)202return render(203request,204'app/newpost.html',205{ 'title':'Добавление статьи',206'blogform':blogform,207'year':datetime.now().year,208}209
210)211
212def videopost(request):213"""Renders the blog page."""214
215assert isinstance(request, HttpRequest)216posts = Blog.objects.all() # запрос на выбор всех статей блога из модели217
218return render(219request,220'app/videopost.html',221{222'title':'Блог',223'posts': posts, # передача списка статей в шаблон веб-страницы224'year':datetime.now().year,225}226
227)