Не могу найти ошибку в моем проекте django

Я создаю сайт бронирования отелей с помощью Django, я использовал booking api для получения отелей с их изображениями и расположением... Я послал в шаблон django список словарей из бэкенда, каждый dict представляет отель, теперь есть два api запроса, которые я использую 1- Чтобы получить все отели 2- Для получения изображений и местоположения отеля на основе его id, который 1 даст мне наряду с другой информацией, такой как название и адрес... (при нажатии кнопки)

Я реализовал цикл в шаблоне, который будет получать все отели из списка на странице, и я использовал id отеля, чтобы передать его в пространство имен url в шаблоне (Template.html), где я хочу вызвать функцию (book_now) и передать следующие аргументы: id отеля, название отеля, адрес отеля.

Теперь происходит следующее: когда я выбираю определенное направление, например, Берлин, Стамбул или Париж, я получаю эту ошибку:

NoReverseMatch at /homepage/
Reverse for 'book_now' with keyword arguments '{'id_hotel': **'6140138'**, 'name': 'Vital Hotel Fulya Istanbul Sisli', 'add': 'FULYA MAH. MEHMETÇİK CAD. NO: 61 İÇ KAPI NO: 3 ŞİŞLİ/İSTANBUL '}' not found. 1 pattern(s) tried: ['homepage/Book_now/(?P<id_hotel>[^/]+)/(?P<name>[^/]+)/(?P<add>[^/]+)$']

Если я выбираю Дубай, Мадрид, Лос-Анджелес все работает нормально я не знаю почему это не логично

и и Если я запускаю только функцию book_now с id 6140138 и названием соответствующего отеля, которое указано в ошибке (Здесь это Vital Hotel Fulya...), я получаю ожидаемый результат в терминале

Я действительно не знаю, что происходит

Homepage.urls

    app_name='Homepage'

urlpatterns = [
    path('',views.hotels_generator,name='hotels_generator'),
    path('Book_now/<id_hotel>/<name>/<add>',views.book_now,name='book_now'),
    path('logging_out/',views.log_out,name='logout'),
    path('AboutUs/',views.about_us,name='AboutUs'),
    path('contact/',views.contact_us,name='contact')
]

Homepage.views

Template.html

<!DOCTYPE html>
<html>
    <head>
        <title>Hotels</title>
        {% load static %}
        <link rel="stylesheet" href="{% static 'Template.css' %}">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
        
    </head>
<section class="packages" id="packages">
    <div class="box-container">
    {% for i  in l %}

            <div class="box">
                <img src="{{i.image_url}}">
                <div class="content">
                    <div><h2>{{i.Hotel_name}}, {{i.hotel_city}}</h2></div>
                    <h4>{{i.hotel_address}}<br><br></h4>
                    <div class="boxxx">
                        <div></div>
                        <div></div>
                        <div class="price"><span>{{i.price}}</span></div>
                    </div>
                    <br>
                    <a href="#"><button style="height: 50px; width: 250px">View on map</button></a>
                    <a href="{% url 'Homepage:book_now' id_hotel=i.id_Hotel name=i.Hotel_name add=i.hotel_address %}"><button style="height: 50px; width: 250px;padding-left:30px;">Book Now</button></a>
                </div>
            </div>
            <script>
                let ratings=1;
                document.getElementById("demo").innerHTML = ratings;
                
            </script>
        <br><br>
    {% endfor %}
    </div>

В этом случае, я думаю, проблема возникает в адресной части запроса. Возможно, вам нужно обновить ваш regex, чтобы включить специальные символы, такие как ÇŞİ

т.е. (?:[A-Z]|[ŞİÇ])

или ваш regex может быть более инклюзивным, принимая любой символ

т.е. book_now\/{id_hotel}\/.*\/

не стесняйтесь проверить свой новый regex здесь https://regex101.com/

enter image description here

Вернуться на верх