Lab 5
Lab 5
Web-технології та Web-дизайн
Лабораторна робота робота №5
Варіант 15
Виконав студент
групи ІР-22
Матвійчук Андрій.
Львів 2020
ГИТ: https://github.com/thefreekley/webLab3-5/tree/master/mysite/main/templates/main
Завдання
Important. You don't have to make a backend from the beginning - connect
an existing one that you worked on in the first year.
If you don’t have a backend server, you should create a new REST API using
any preferred technology.
views.py
def view_page(request):
printer=Printer.objects.order_by('-price')
return render(request,'main\View Page.html', {'printer':printer})
class PrinterUpdateView(UpdateView):
model = Printer
template_name = 'main\Edit Page.html'
form_class = PrinterForm
class PrinterDeleteView(DeleteView):
model = Printer
success_url = '/'
def get(self, request, *args, **kwargs):
return self.post(request, *args, **kwargs)
def create_page(request):
error= False
if request.method == 'POST':
form = PrinterForm(request.POST)
if form.is_valid():
form.save()
return redirect('view')
else:
error=True
form = PrinterForm()
date = {
'form':form,
'error':error
}
return render(request,'main\Create Page.html',date)
urls.py
urlpatterns= [
path('', views.view_page, name='view'),
path('create_page',views.create_page, name='create'),
path('<int:pk>/update', views.PrinterUpdateView.as_view(), name='update'),
path('<int:pk>/delete', views.PrinterDeleteView.as_view(), name='delete')
]
models.py
class Printer(models.Model):
title= models.CharField("Title",max_length=40)
description = models.CharField("Description",max_length=200)
speed = models.IntegerField("Speed of movement")
price = models.IntegerField("Price")
date = models.DateTimeField("Date of publication")
def __str__(self):
return self.title
def get_absolute_url(self):
return '/'
forms.py
Форма для відправок данних на сервер із веб-сторінки
from .models import Printer
from django.forms import ModelForm,TextInput,Textarea
class PrinterForm(ModelForm):
class Meta:
model = Printer
fields = ['title','description','speed','price','date']
widgets = {
"title":TextInput(attrs={
'class': 'form__area_title-input',
'placeholder' : 'Text...'
}),
"description": Textarea(attrs={
'class':'form__area_input-description'
}),
"price": TextInput(attrs={
'type': 'number',
'class': 'form__control',
'min':'0',
'value':'1'
}),
"speed": TextInput(attrs={
'type': 'number',
'class': 'form__control',
'min': '0',
'value': '1'
}),
"date": TextInput(attrs={
'class':'form__control',
'type':"date"
})