DjangoWebProject1

Форк
0
227 строк · 8.3 Кб
1
"""
2
Definition of views.
3
"""
4

5
from django.shortcuts import render, redirect
6
from django.http import HttpRequest
7
from django.template import RequestContext
8
from datetime import datetime
9
from app.forms import RewievsForm
10
from django.contrib.auth.forms import UserCreationForm
11
from django.db import models
12
from .models import Blog
13
from .models import Comment # использование модели комментариев
14
from .forms import CommentForm # использование формы ввода комментария
15
from .forms import BlogForm
16

17
def home(request):
18
    """Renders the home page."""
19
    assert isinstance(request, HttpRequest)
20
    return render(
21
        request,
22
        'app/index.html',
23
        {
24
            'title':'Главная',
25
            'year':datetime.now().year,
26
        }
27
    )
28

29
def contact(request):
30
    """Renders the contact page."""
31
    assert isinstance(request, HttpRequest)
32
    return render(
33
        request,
34
        'app/contact.html',
35
        {
36
            'title':'Контакты',
37
            'message':'Ваша контактная страница.',
38
            'year':datetime.now().year,
39
        }
40
    )
41
def blog(request):
42
    """Renders the blog page."""
43

44
    assert isinstance(request, HttpRequest)
45
    posts = Blog.objects.all() # запрос на выбор всех статей блога из модели
46

47
    return render(
48
        request,
49
        'app/blog.html',
50
        {
51
            'title':'Блог',
52
            'posts': posts, # передача списка статей в шаблон веб-страницы
53
            'year':datetime.now().year,
54
        }
55

56
    )
57

58
def blogpost(request, parametr):
59
    """Renders the blogpost page."""
60

61
    
62
    post_1 = Blog.objects.get(id=parametr) # запрос на выбор конкретной статьи по параметру
63
    comments = Comment.objects.filter(post=parametr)
64

65
    if request.method == "POST": # после отправки данных формы на сервер методом POST
66
        form = CommentForm(request.POST)
67
        if form.is_valid():
68
            comment_f = form.save(commit=False)
69
            comment_f.author = request.user # добавляем (так как этого поля нет в форме) в модель Комментария (Comment) в поле автор авторизованного пользователя
70
            comment_f.date = datetime.now() # добавляем в модель Комментария (Comment) текущую дату
71
            comment_f.post = Blog.objects.get(id=parametr) # добавляем в модель Комментария (Comment) статью, для которой данный комментарий
72
            comment_f.save() # сохраняем изменения после добавления полей
73

74
            return redirect('blogpost', parametr=post_1.id) # переадресация на ту же страницу статьи после отправки комментария
75

76
    else:
77
        form = CommentForm() # создание формы для ввода комментария
78
    assert isinstance(request, HttpRequest)
79
    return render(
80
        request,
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

92
def about(request):
93
    """Renders the about page."""
94
    assert isinstance(request, HttpRequest)
95
    return render(
96
        request,
97
        'app/about.html',
98
        {
99
            'title':'Добро пожаловать!',
100
            'message':'"От людей, для людей"',
101
            'year':datetime.now().year,
102
        }
103
    )
104

105
def rewiev(request):
106
    assert isinstance(request, HttpRequest)
107
    data=None
108
    opinion={'1':'Да','2':'Наверное',
109
              '3':'Скорее нет','4':'Нет'}
110

111
    preposition={'1':'8-14','2':'14-18',
112
              '3':'18-25','4':'25-40',
113
              '5':'40+'}
114
    if request.method == 'POST':
115
        form = RewievsForm(request.POST)
116
        if form.is_valid():
117
           data=dict()
118
           data['name']=form.cleaned_data['name']
119
           data['opinion']=opinion[form.cleaned_data['opinion'] ]
120
           data['preposition']=preposition[form.cleaned_data['preposition'] ]
121
           if (form.cleaned_data['flag']==True):
122
                data['flag']='Да'
123
           else:
124
                data['flag']='Нет'
125

126
           data['email']=form.cleaned_data['email']
127
           data['positive']=form.cleaned_data['positive']
128
           data['negative']=form.cleaned_data['negative']
129
           form=None
130
    else:
131
        form = RewievsForm()
132

133
    return render(
134
        request,
135
        'app/rewiev.html',
136
        {   
137
            'title':'Отзыв',
138
            'form':form,
139
            'data':data,
140
            'year':datetime.now().year,
141
       
142
        }
143
    )
144

145
    
146
def registration(request):
147
    """Renders the registration page."""
148

149
    if request.method == "POST": # после отправки формы
150
        regform = UserCreationForm(request.POST)
151

152
        if regform.is_valid(): #валидация полей формы
153
            reg_f = regform.save(commit=False) # не сохраняем автоматически данные формы
154

155
            reg_f.is_staff = False # запрещен вход в административный раздел
156

157
            reg_f.is_active = True # активный пользователь
158

159
            reg_f.is_superuser = False # не является суперпользователем
160

161
            reg_f.date_joined = datetime.now() # дата регистрации
162

163
            reg_f.last_login = datetime.now() # дата последней авторизации
164

165
            reg_f.save() # сохраняем изменения после добавления данных
166

167
            return redirect('home') # переадресация на главную страницу после регистрации
168

169
    else:
170

171
        regform = UserCreationForm() # создание объекта формы для ввода данных нового пользователя
172

173
    assert isinstance(request, HttpRequest)
174

175
    return render(
176
            request,
177
            'app/registration.html',
178
            {  
179
                'title':'Регистрация',
180
                'regform': regform, # передача формы в шаблон веб-страницы
181
                'year':datetime.now().year,
182

183
            }
184

185
        )
186

187

188
def newpost(request):
189
    
190
    if request.method == "POST": # после отправки данных формы на сервер методом POST
191
        blogform = BlogForm(request.POST, request.FILES)
192
        if blogform.is_valid():
193
            blog_f = blogform.save(commit=False)
194
            blog_f.posted = datetime.now() # добавляем в модель Комментария (Comment) текущую дату
195
            blog_f.save() # сохраняем изменения после добавления полей
196

197
            return redirect('blog') # переадресация на ту же страницу статьи после отправки комментария
198

199
    else:
200
        blogform = BlogForm() # создание формы для ввода комментария
201
    assert isinstance(request, HttpRequest)
202
    return render(
203
        request,
204
        'app/newpost.html',
205
        {   'title':'Добавление статьи',
206
            'blogform':blogform,
207
            'year':datetime.now().year,
208
        }
209

210
    )
211

212
def videopost(request):
213
    """Renders the blog page."""
214

215
    assert isinstance(request, HttpRequest)
216
    posts = Blog.objects.all() # запрос на выбор всех статей блога из модели
217

218
    return render(
219
        request,
220
        'app/videopost.html',
221
        {
222
            'title':'Блог',
223
            'posts': posts, # передача списка статей в шаблон веб-страницы
224
            'year':datetime.now().year,
225
        }
226

227
    )

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.