Обработка неправильных 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'),
]
Вернуться на верх