Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Список использованных источников. 1) Ромель А.П, Финкова М.А., Матвеев М.Д., Наука и техника, 2016 ⇐ ПредыдущаяСтр 5 из 5
1) Ромель А.П, Финкова М.А., Матвеев М.Д., Наука и техника, 2016, 336 c. 2) https://habr.com/ru/post/122018/ 3) Купер А., Рейманн Р., Кронин Д., Носсел К. Интерфейс. Основы проектирования взаимодействия. 4 изд. — Питер, 2017. — 720 с. 4) Руссинович Марк, Соломон Дэвид, Алекс Ионеску, Питер, Всё о Windows 10, 2018, 944 c. 5) Пирс Б. Типы в языках программирования. — Добросвет, 2012. — 680 с.
Приложение А (обязательное) Листинг программы
from django.db.models import Q from django.http import JsonResponse, HttpResponse from django.shortcuts import redirect from django.views.generic import ListView, DetailView from django.views.generic.base import View
from.models import Movie, Category, Actor, Director, Genre, Rating, Reviews from.forms import ReviewForm, RatingForm
class GenreYear: """Жанры и года выхода фильмов""" def get_genres(self): return Genre.objects.all()
def get_years(self): return Movie.objects.filter(draft=False).values("year").distinct()
class MoviesView(GenreYear, ListView): """Список фильмов""" model = Movie queryset = Movie.objects.filter(draft=False) paginate_by = 6
class MovieDetailView(GenreYear, DetailView): """Полное описание фильма""" model = Movie queryset = Movie.objects.filter(draft=False) slug_field = "url"
def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["star_form"] = RatingForm() return context
class AddReview(View): """Отзывы""" def post(self, request, pk): form = ReviewForm(request.POST) movie = Movie.objects.get(id=pk) if form.is_valid(): form = form.save(commit=False) if request.POST.get("parent", None): form.parent_id = int(request.POST.get("parent")) form.movie = movie form.save() return redirect(movie.get_absolute_url())
class ActorView(GenreYear, DetailView): """Вывод информации о актере""" model = Actor template_name = 'movies/actor.html' slug_field = "name"
class DirectorView(DetailView): """Вывод информации о Director""" model = Director template_name = 'movies/director.html' slug_field = "name"
class FilterMoviesView(GenreYear, ListView): """Фильтр фильмов""" paginate_by = 3
def get_queryset(self): queryset = Movie.objects.filter( Q(year__in=self.request.GET.getlist("year")) | Q(category__in=self.request.GET.getlist("category")) | Q(genres__in=self.request.GET.getlist("genre")) ).distinct() return queryset
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context["year"] = ''.join([f"year={x}&" for x in self.request.GET.getlist("year")]) context["category"] = ''.join([f"category={x}&" for x in self.request.GET.getlist("category")]) context["genre"] = ''.join([f"genre={x}&" for x in self.request.GET.getlist("genre")]) return context
class JsonFilterMoviesView(ListView): """Фильтр фильмов в json""" def get_queryset(self): queryset = Movie.objects.filter( Q(year__in=self.request.GET.getlist("year")) | Q(category__in=self.request.GET.getlist("category")) | Q(genres__in=self.request.GET.getlist("genre")) ).distinct().values("title", "tagline", "url", "poster") return queryset
def get(self, request, *args, **kwargs): queryset = list(self.get_queryset()) return JsonResponse({"movies": queryset}, safe=False)
class AddStarRating(View): """Добавление рейтинга фильму""" def get_client_ip(self, request): x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') if x_forwarded_for: ip = x_forwarded_for.split(',')[0] else: ip = request.META.get('REMOTE_ADDR') return ip
def post(self, request): form = RatingForm(request.POST) if form.is_valid(): Rating.objects.update_or_create( ip=self.get_client_ip(request), movie_id=int(request.POST.get("movie")), defaults={'star_id': int(request.POST.get("star"))} ) return HttpResponse(status=201) else: return HttpResponse(status=400)
class Search(ListView): """Поиск фильмов""" paginate_by = 6
def get_queryset(self): return Movie.objects.filter(title__icontains=self.request.GET.get("q"))
def get_context_data(self, *args, **kwargs): context = super().get_context_data(*args, **kwargs) context["q"] = f'q={self.request.GET.get("q")}&' return context
from django import forms
from.models import Reviews, Rating, RatingStar
class ReviewForm(forms.ModelForm): """Форма отзывов""" class Meta: model = Reviews fields = ("name", "email", "text")
class RatingForm(forms.ModelForm): """Форма добавления рейтинга""" star = forms.ModelChoiceField( queryset=RatingStar.objects.all(), widget=forms.RadioSelect(), empty_label=None )
class Meta: model = Rating fields = ("star",)
from django import forms from django.contrib import admin from django.utils.safestring import mark_safe
from.models import Category, Genre, Movie, MovieShots, Actor, Rating, RatingStar, Reviews, Director
from ckeditor_uploader.widgets import CKEditorUploadingWidget
class MovieAdminForm(forms.ModelForm): description = forms.CharField(label="Описание", widget=CKEditorUploadingWidget())
class Meta: model = Movie fields = '__all__'
@admin.register(Category) class CategoryAdmin(admin.ModelAdmin): """Категории""" list_display = ("id", "name", "url") list_display_links = ("name",)
class ReviewInline(admin.TabularInline): """Отзывы на странице фильма""" model = Reviews extra = 1 readonly_fields = ("name", "email")
class MovieShotsInline(admin.TabularInline): model = MovieShots extra = 1 readonly_fields = ("get_image",)
def get_image(self, obj):
return mark_safe(f'<img src={obj.image.url} height="110"')
get_image.short_description = "Изображение"
@admin.register(Movie) class MovieAdmin(admin.ModelAdmin): """Фильмы""" list_display = ("title", "category", "url", "draft") list_filter = ("category", "year") search_fields = ("title", "category__name") inlines = [MovieShotsInline, ReviewInline] save_on_top = True save_as = True list_editable = ("draft",) actions = ["publish", "unpublish"] form = MovieAdminForm readonly_fields = ("get_image",) fieldsets = ( (None, { "fields": (("title", "tagline"),) }), (None, { "fields": ("description", ("poster", "get_image")) }), (None, { "fields": (("year", "world_premiere", "country"),) }), ("Actors", { "classes": ("collapse",), "fields": (("actors", "directors", "genres", "category"),) }), (None, { "fields": (("budget", "fees_in_usa", "fess_in_world"),) }), ("Options", { "fields": (("url", "draft"),) }), )
def get_image(self, obj): return mark_safe(f'<img src={obj.poster.url} height="110"')
def unpublish(self, request, queryset): row_update = queryset.update(draft=True) if row_update == 1: message_bit = "1 запись была обновлена" else: message_bit = f"{row_update} записей были обновлены" self.message_user(request, f"{message_bit}")
def publish(self, request, queryset): """Опубликовать""" row_update = queryset.update(draft=False) if row_update == 1: message_bit = "1 запись была обновлена" else: message_bit = f"{row_update} записей были обновлены" self.message_user(request, f"{message_bit}")
publish.short_description = "Опубликовать" publish.allowed_permissions = ('change',)
unpublish.short_description = "Снять с публикации" unpublish.allowed_permissions = ('change',)
get_image.short_description = "Постер"
@admin.register(Reviews) class ReviewAdmin(admin.ModelAdmin): """Отзывы""" list_display = ("name", "email", "parent", "movie", "id") readonly_fields = ("name", "email")
@admin.register(Genre) class GenreAdmin(admin.ModelAdmin): """Жанры""" list_display = ("name", "url")
@admin.register(Actor) class ActorAdmin(admin.ModelAdmin): """Актеры""" list_display = ("name", "age", "get_image") readonly_fields = ("get_image",)
def get_image(self, obj): return mark_safe(f'<img src={obj.image.url} height="60"')
get_image.short_description = "Изображение"
@admin.register(Director) class DirectorAdmin(admin.ModelAdmin): """Режиссеры""" list_display = ("name", "age", "get_image") readonly_fields = ("get_image",)
def get_image(self, obj): return mark_safe(f'<img src={obj.image.url} height="60"')
get_image.short_description = "Изображение"
@admin.register(Rating) class RatingAdmin(admin.ModelAdmin): """Рейтинг""" list_display = ("star", "movie", "ip")
@admin.register(MovieShots) class MovieShotsAdmin(admin.ModelAdmin): """Кадры из фильма""" list_display = ("title", "movie", "get_image") readonly_fields = ("get_image",)
def get_image(self, obj): return mark_safe(f'<img src={obj.image.url} height="60"')
get_image.short_description = "Изображение"
admin.site.register(RatingStar)
admin.site.site_title = "WikiFilms" admin.site.site_header = "WikiFilms"
function ajaxSend(url, params) { // Отправляем запрос fetch(`${url}?${params}`, { method: 'GET', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }) .then(response => response.json()) .then(json => render(json)) .catch(error => console.error(error)) }
function render(data) { // Рендер шаблона let template = Hogan.compile(html); let output = template.render(data);
const div = document.querySelector('.left-ads-display>.row'); div.innerHTML = output; }
let html = '\ {{#movies}}\ <div class="col-md-4 product-men">\ <div class="product-shoe-info editContent text-center mt-lg-4">\
<div class="men-thumb-item">\ <img src="media/{{ poster }}" class="img-fluid" alt="">\ </div>\ <div class="item-info-product">\ <h4 class="">\ <a href="/{{ url }}" class="editContent">{{ title }}</a>\ </h4>\ <div class="product_price">\ <div class="grid-price">\ <span class="money editContent">{{ tagline }}</span>\ </div>\ </div>\ <ul class="stars">\ <li><a href="#"><span class="fa fa-star" aria-hidden="true"></span></a></li>\ <li><a href="#"><span class="fa fa-star" aria-hidden="true"></span></a></li>\ <li><a href="#"><span class="fa fa-star-half-o" aria-hidden="true"></span></a></li>\ <li><a href="#"><span class="fa fa-star-half-o" aria-hidden="true"></span></a></li>\ <li><a href="#"><span class="fa fa-star-o" aria-hidden="true"></span></a></li>\ </ul>\ </div>\ </div>\ </div>\ {{/movies}}'
// Add star rating const rating = document.querySelector('form[name=rating]');
rating.addEventListener("change", function (e) { // Получаем данные из формы let data = new FormData(this); fetch(`${this.action}`, { method: 'POST', body: data }) .then(response => alert("Рейтинг установлен")) .catch(error => alert("Ошибка")) });
{% extends 'movies/base.html' %} {% load static %} {% block title %} {{ actor.name }} {% endblock title %} {% block container %} <div class="container py-md-3"> {% endblock container %}
{% block sidebar %} <div class="side-bar col-lg-4"> {% endblock sidebar %}
{% block movie %} <div class="left-ads-display col-lg-8"> <div class="row"> <div class="desc1-left col-md-6"> <img src="{{ actor.image.url }}" class="img-fluid" alt=""> </div> <div class="desc1-right col-md-6 pl-lg-4"> <h3 class="editContent"> {{ movie.title }} </h3> <h5 class="editContent"></h5> <ul> <li> <span><b>Возраст:</b> {{ actor.age }} лет</span> </li> <li><span><b>Актер:</b> {% for movie in actor.film_actor.all %} {{ movie.title }} {% endfor %} </span> </li> </ul> </div> </div> <div class="row sub-para-w3layouts mt-5"> <h3 class="shop-sing editContent"> О {{ actor.name }} </h3> <p class="editContent"> {{ actor.description|safe }}
</p> </div> </div> {% endblock movie %}
{% extends 'base.html' %} {% block title %} {% endblock title %} {% block content %} <section class="ab-info-main py-md-5 py-4 editContent" style="padding-left: 3rem; padding-right: 3rem;"> {% block container %} <div class="container-fluid py-md-3"> {% endblock container %} <div class="row"> {% block sidebar %} <div class="side-bar col-lg-3"> {% endblock sidebar %} {% include 'include/sidebar.html' %} </div> {% block movie %} {% endblock movie %} </div> </div> </section> {% endblock content %}
{% extends 'movies/base.html' %} {% load static %} {% block title %} {{ director.name }} {% endblock title %} {% block container %} <div class="container py-md-3"> {% endblock container %}
{% block sidebar %} <div class="side-bar col-lg-4"> {% endblock sidebar %}
{% block movie %} <div class="left-ads-display col-lg-8"> <div class="row"> <div class="desc1-left col-md-6"> <img src="{{ director.image.url }}" class="img-fluid" alt=""> </div> <div class="desc1-right col-md-6 pl-lg-4"> <h3 class="editContent"> {{ movie.title }} </h3> <h5 class="editContent"></h5> <ul> <li> <span><b>Возраст:</b> {{ director.age }} лет</span></li> <li> <span><b>Режиссер:</b> {% for movie in director.film_director.all %} {{ movie.title }} {% endfor %} </span> </li> </li> </ul> </div> </div> <div class="row sub-para-w3layouts mt-5"> <h3 class="shop-sing editContent"> О {{ director.name }} </h3> <p class="editContent"> {{ director.description|safe }} </p> </div> </div> {% endblock movie %}
{% extends 'movies/base.html' %} {% load static %} {% block title %} {{ movie.title }} {% endblock title %} {% block container %} <div class="container py-md-3"> {% endblock container %}
{% block sidebar %} <div class="side-bar col-lg-4"> {% endblock sidebar %}
{% block movie %} <div class="left-ads-display col-lg-8"> <div class="row"> <div class="desc1-left col-md-6"> <img src="{{ movie.poster.url }}" class="img-fluid" alt=""> </div> <div class="desc1-right col-md-6 pl-lg-4"> <h3 class="editContent"> {{ movie.title }} </h3> <h5 class="editContent"></h5> <ul> <li style="list-style: none"> <span><b>Год:</b> {{ movie.year }}</span></li> <li style="list-style: none"> <span><b>Страна:</b> {{ movie.country }}</span> </li> <li style="list-style: none"> <span><b>Слоган:</b> {{ movie.tagline }}</span> </li> <li style="list-style: none"> <span><b>Режиссер:</b> {% for director in movie.directors.all %} <a href="{{ director.get_absolute_url }}"> {{ director.name }} </a> {% endfor %}
</span> </li> <li style="list-style: none"><span><b>Актеры:</b> {% for actor in movie.actors.all %} <a href="{{ actor.get_absolute_url }}"> {{ actor.name }} </a> {% endfor %} </span> </li> <li style="list-style: none"><span><b>Жанр:</b> {% for genre in movie.genres.all %} {{ genre.name }} {% endfor %} </span> </li> <li style="list-style: none"> <span><b>Премьера в мире:</b> {{ movie.world_premiere }}</span> </li> <li style="list-style: none"> <span><b>Бюджет:</b> ${{ movie.budget }}</span></li> <li style="list-style: none"> <span><b>Сборы в США:</b> ${{ movie.fees_in_usa }}</span></li> <li style="list-style: none"> <span><b>Сборы в мире:</b> ${{ movie.fess_in_world }}</span> </li> <li style="list-style: none"> <form action="{% url 'add_rating' %}" method="post" name="rating"> <b>Рейтинг:</b> {% csrf_token %} <input type="hidden" value="{{ movie.id }}" name="movie"> <span class="rating"> {% for k, v in star_form.fields.star.choices %} <input id="rating{{ v }}" type="radio" name="star" value="{{ k }}"> <label for="rating{{ v }}">{{ v }}</label> {% endfor %} </span> <span class="editContent">{{ k }} </span> </form> </li> </ul> </div> </div>
<div class="row sub-para-w3layouts mt-5">
<h3 class="shop-sing editContent"> О фильме {{ movie.title }} </h3> <p> {% for image in movie.movieshots_set.all %} <img src="{{ image.image.url }}" class="img-movie-shots " alt="{{ image.description }}"> {% endfor %} </p> <p class="editContent"> {{ movie.description|safe }} </p> </div> <hr> <div class="row"> <div class="single-form-left"> <!-- contact form grid --> <div class="contact-single"> <h3 class="editContent"> <span class="sub-tittle editContent">{{ movie.reviews_set.count }}</span>Оставить отзыв</h3> <form action="{% url 'add_review' movie.id %}" method="post" class="mt-4" id="formReview"> {% csrf_token %} <input type="hidden" name="parent" id="contactparent" value=""> <div class="form-group editContent"> <label for="contactcomment" class="editContent"> Ваш комментарий * </label> <textarea class="form-control border" rows="5" name="text" id="contactcomment" required=""></textarea> </div> <div class="d-sm-flex"> <div class="col-sm-6 form-group p-0 editContent"> <label for="contactusername" class="editContent"> Имя * </label> <input type="text" class="form-control border" name="name" id="contactusername" required=""> </div> <div class="col-sm-6 form-group ml-sm-3 editContent"> <label for="contactemail" class="editContent"> Email * </label> <input type="email" class="form-control border" name="email" id="contactemail" required=""> </div> </div> <button type="submit" class="mt-3 btn btn-success btn-block py-3"> Отправить </button> </form> </div> <!-- //contact form grid ends here --> </div> </div> {% for review in movie.get_review %} <div class="media py-5"> <img src="{% static 'images/te.png' %}" class="mr-3 img-fluid" alt="image"> <div class="media-body mt-4"> <h5 class="mt-0 editContent"> {{ review.name }} </h5> <p class="mt-2 editContent"> {{ review.text }} </p> <a href="#formReview" onclick="addReview('{{ review.name }}', '{{ review.id }}')">Ответить</a> {% for rew in review.reviews_set.all %} <div class="media mt-5 editContent"> <a class="pr-3" href="#"> <img src="{% static 'images/te.png' %}" class="img-fluid " alt="image"> </a> <div class="media-body"> <h5 class="mt-0 editContent">{{ rew.name }}</h5> <p class="mt-2 editContent">{{ rew.text }}</p> </div> </div> {% endfor %} </div> </div> {% endfor %} </div> <script> function addReview(name, id) { document.getElementById("contactparent").value = id; document.getElementById("contactcomment").innerText = `${name}, ` }
</script> {% endblock movie %}
{% extends 'movies/base.html' %} {% block title %} {% endblock title %} {% block header %} bg1 {% endblock header %} {% block movie %} <div class="left-ads-display col-lg-9"> <div class="row"> {% for movie in movie_list %} <div class="col-md-4 product-men"> <div class="product-shoe-info editContent text-center mt-lg-4"> <div class="men-thumb-item"> <img src="{{ movie.poster.url }}" class="img-fluid" alt=""> </div> <div class="item-info-product"> <h4 class=""> <a href="{{ movie.get_absolute_url }}" class="editContent"> {{ movie.title }} </a> </h4>
<div class="product_price"> <div class="grid-price"> <span class="money editContent">{{ movie.tagline }}</span> </div> </div>
</div> </div> </div> {% endfor %} </div> <div class="grid-img-right mt-4 text-right bg bg1" > {% include 'include/pagination.html' %} </div> </div> {% endblock movie %}
<div class="deal-leftmk left-side"> <h3 class="sear-head editContent">Последние добавленные</h3> {% for movie in last_movies %} <div class="special-sec1 row mt-3 editContent"> <div class="img-deals col-md-4"> <img src="{{ movie.poster.url }}" class="img-fluid" alt=""> </div> <a href="{{ movie.get_absolute_url }}">
<div class="img-deal1 col-md-4"> <h3 class="editContent">{{ movie.title }}</h3> <a href="{{ movie.get_absolute_url }}" class="editContent"></a> </div> </a> </div> {% endfor %} </div>
{% load movie_tag %} <header class="header"> <div class="container-fluid px-lg-5"> <!-- nav --> <nav class="py-4"> <div id="logo"> <h1><a href="/" class="editContent" style="outline: none; outline-offset: -2px; cursor: inherit; color: rgb(255, 255, 255); font-size: 40px; background-color: rgba(0, 0, 0, 0); font-family: Source Sans Pro; sans-serif;">WikiFilms</a> </h1> </div>
<!-- <label for="drop" class="toggle">Menu</label> <input type="checkbox" id="drop"> <ul class="menu mt-2"> <li class="active"><a href="/">Главная</a></li> <li> <!-- First Tier Drop Down <label for="drop-2" class="toggle">Категории <span class="fa fa-angle-down" aria-hidden="true"></span> </label> <a href="#">Категории <span class="fa fa-angle-down" aria-hidden="true"></span></a> <input type="checkbox" id="drop-2"> <ul> {% get_categories as categories %} {% for category in categories %} <li><a href="/">{{ category.name }}</a></li> {% endfor %} </ul> </li> <li><a href="contact.html" style="color: rgb(255, 255, 255); font-weight: 700; text-transform: uppercase;">Вход</a> </li> </ul> --> </nav> <!-- //nav --> </div> </header> <!-- //header --> <!--/banner--> <div class="banner-info"> <h3 class="mb-4 editContent">Все о кино</h3> <div class="ban-buttons">
</div> </div> <!--// banner-inner -->
<ul class="pagination"> {% if page_obj.has_previous %} {% if page_obj.number|add:'-3' > 1 %} <li class="pagination__item"> <a href="?{{ q }}{{ genre }}{{ year }}page=1">1</a> </li> {% endif %} {% if page_obj.number|add:'-3' >= 3 %} <li class="pagination__item pagination__item--dots"> <a href="?{{ q }}{{ genre }}{{ year }}page={{ page_obj.previous_page_number|add:'-3' }}"> <span class="pagination__link">• • •</span> </a> </li> {% endif %} {% endif %} {% if paginator.page_range|length > 1 %} {% for i in paginator.page_range %} {% if page_obj.number == i %} <li class="pagination__item active"> <a class="pagination__link" href="#">{{ i }}</a> </li> {% elif i > page_obj.number|add:'-4' and i < page_obj.number|add:'4' %} <li class="pagination__item"> <a class="pagination__link" href="?{{ q }}{{ genre }}{{ year }}page={{ i }}">{{ i }}</a> </li> {% endif %} {% endfor %} {% endif %} {% if page_obj.has_next %} {% if page_obj.number|add:'4' < page_obj.paginator.num_pages %} <li class="pagination__item pagination__item--dots"> <a href="?{{ q }}{{ genre }}{{ year }}page={{ page_obj.next_page_number|add:'3' }}"> <span class="pagination__link">• • •</span> </a> </li> {% endif %} {% if page_obj.number|add:'3' < page_obj.paginator.num_pages %} <li class="pagination__item"> <a class="pagination__link" href="?{{ q }}{{ genre }}{{ year }}page={{ page_obj.paginator.num_pages }}"> {{ page_obj.paginator.num_pages }} </a> </li> {% endif %} {% endif %} </ul>
{% load movie_tag %} <div class="search-bar w3layouts-newsletter"> <h3 class="sear-head editContent">Поиск фильма</h3> <form action="{% url 'search' %}" method="get" class="d-flex editContent"> <input type="search" placeholder="Введите название..." name="q" class="form-control" required=""> <button type="submit" class="btn1 btn"><span class="fa fa-search" aria-hidden="true"></span></button> </form> </div>
<!--preference --> <form action="{% url 'filter' %}" method="get" name="filter"> <div class="left-side my-4"> <h3 class="sear-head editContent">Жанры</h3> <ul class="w3layouts-box-list"> {% for genre in view.get_genres %} <li class="editContent"> <input type="checkbox" class="checked" name="genre" value="{{ genre.id }}"> <span class="span editContent">{{ genre.name }}</span> </li> {% endfor %} </ul> </div> <!-- // preference -->
<!-- Category --> <div class="left-side my-4"> <h3 class="sear-head editContent">Категории</h3> <ul class="w3layouts-box-list"> {% get_categories as categories %} {% for category in categories %} <li class="editContent"> <input type="checkbox" class="checked" name="category" value="{{ category.id }}"> <span class="span editContent">{{ category.name }}</span> </li> {% endfor %} </ul> </div> <!-- //category -->
<!-- discounts --> <div class="left-side"> <h3 class="sear-head editContent">Год</h3> <ul class="w3layouts-box-list"> {% for movie in view.get_years %} <li class="editContent"> <input type="checkbox" class="checked" name="year" value="{{ movie.year }}"> <span class="span editContent">{{ movie.year }}</span> </li> {% endfor %} </ul> </div> <button class="btn1 btn" type="submit">Найти</button> </form> <hr> {% get_last_movies count=4 %}
from django import template from movies.models import Category, Movie
register = template.Library()
@register.simple_tag() def get_categories(): """Вывод всех категорий""" return Category.objects.all()
@register.inclusion_tag('movies/tags/last_movie.html') def get_last_movies(count=5): movies = Movie.objects.order_by("id")[:count] return {"last_movies": movies}
from django.urls import path
from. import views
urlpatterns = [ path("", views.MoviesView.as_view()), path("filter/", views.FilterMoviesView.as_view(), name='filter'), path("search/", views.Search.as_view(), name='search'), path("add-rating/", views.AddStarRating.as_view(), name='add_rating'), path("json-filter/", views.JsonFilterMoviesView.as_view(), name='json_filter'), path("<slug:slug>/", views.MovieDetailView.as_view(), name="movie_detail"), path("review/<int:pk>/", views.AddReview.as_view(), name="add_review"), path("actor/<str:slug>/", views.ActorView.as_view(), name="actor_detail"), path("director/<str:slug>/", views.DirectorView.as_view(), name="director_detail"), ]
|
|||||||||
Последнее изменение этой страницы: 2021-05-12; просмотров: 61; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.188.11 (0.666 с.) |