Здравствуйте. Есть система купонов на сайте. Вот views
from django.shortcuts import render, redirect
from django.views.decorators.http import require_POST
from django.utils import timezone
from .models import Coupon
from .forms import CouponApplyForm
@require_POST
def coupon_apply(request):
now = timezone.now()
form = CouponApplyForm(request.POST)
if form.is_valid():
code = form.cleaned_data['code']
try:
coupon = Coupon.objects.get(code__iexact=code,
valid_from__lte=now,
valid_to__gte=now,
active=True)
request.session['coupon_id'] = coupon.id
except Coupon.DoesNotExists:
request.session['coupon_id'] = None
return redirect('cart:cart_detail')
Дело в том,что если неверно ввести код купона, то выйдет вот такая ошибка
models.pyfrom django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
from datetime import datetime
class Coupon(models.Model):
code = models.CharField(max_length=50, unique=True)
valid_from = models.DateTimeField()
valid_to = models.DateTimeField()
discount = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)])
active = models.BooleanField()
def __str__(self):
return self.code
Traceback:Traceback (most recent call last):
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\env\lib\site-packages\django\core\handlers\exception.py", line 41, in inner
response = get_response(request)
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\env\lib\site-packages\django\core\handlers\base.py", line 249, in _legacy_get_response
response = self._get_response(request)
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\env\lib\site-packages\django\core\handlers\base.py", line 187, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\env\lib\site-packages\django\core\handlers\base.py", line 185, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\env\lib\site-packages\django\views\decorators\http.py", line 40, in inner
return func(request, *args, **kwargs)
File "C:\Users\User\source\repos\OnlineCourseMyShop(MAJOR)design_shablon_21_10_2020Coupons\OnlineCourse\coupons\views.py", line 20, in coupon_apply
except Coupon.DoesNotExists:
AttributeError: type object 'Coupon' has no attribute 'DoesNotExists'
[06/Dec/2020 14:26:27] "POST /coupons/apply/ HTTP/1.1" 500 95011
Not Found: /favicon.ico
[06/Dec/2020 14:26:28] "GET /favicon.ico HTTP/1.1" 404 4757
В целом здесь происходит исключение DoesNotExist. Но как мне просто вывести в самом шаблоне информацию типа: "Вы ввели неверный купон". Мне не нужно чтобы вылетала такая ошибка да еще и на отдельной странице и в таком непрезетабельном виде : )
Уверен,что-то надо поменять во views