Не могу найти ошибку в моем проекте 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/
