Обработка неправильных url в Django
127.0.0.1:8000/writers/Hemingway/The_Old_Man_and_ the_Sea — должна открыться страница с информацией о книге “Старик и море”; 127.0.0.1:8000/writers/Hemingway/The_Sun_Also_Rises — должна открыться страница с информацией о книге «И восходит солнце». если нету информации о книге, надо вывести страницу с информацией об авторе
Views.py
from django.shortcuts import render
def homepage(request,):
return render(request, 'app/index.html')
def books(request):
return render(request, 'app/books.html')
def writers(request):
return render(request, 'app/writers.html')
def writer(request, name):
if name == 'Hemingway':
return render(request, 'app/Hemingway.html')
elif name == 'Shakespeare':
return render(request, 'app/Shakespeare.html')
else:
return writers(request)
def topBooks(request, number):
if number == '1':
return render(request, 'app/hamlet.html')
elif number == '3':
return render(request, 'app/warandpeace.html')
else:
return books(request)
def wroteBooks(request, name, book):
pass
Url.py
from django.urls import path, re_path
from .views import *
urlpatterns = [
path('', homepage, name='homepage'),
path('writers/', writers, name='writers'),
path('books/', books, name='books'),
re_path(r"^writers/(?P<name>\D+)", writer, name='writer'),
re_path(r"^books/(?P<number>[0-9])", topBooks, name='topBooks'),
path("writers/(<str:name>)/(<slug:book>)", wroteBooks, name='topBooks'),
]