Реверс для 'detalle_reserva' с аргументами '('',)' не найден. Проверено 1 шаблон(ы): ['reserva/(?P<reserva_id>[^/]+)/\\\Z'].
Пожалуйста, помогите мне, я не знаю, почему я получаю эту ошибку, я следую учебнику youtube и не понимаю, почему ошибка.
я пробовал изменить путь в урлах, но это не помогло.
Я искал другие решения той же проблемы, и ни одно из них не работает.
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class Reserva(models.Model):
auto = models.CharField(max_length=100)
fecha = models.DateTimeField(auto_now_add=True)
fecha_reserva = models.DateField(null=True)
hora1 = '9:00am - 10:00am'
hora2 = '10:00am - 11:00am'
hora3 = '11:00am - 12:00pm'
hora4 = '12:00pm - 13:00pm'
hora5 = '14:00pm - 15:00pm'
hora6 = '15:00pm - 16:00pm'
hora7 = '16:00pm - 17:00pm'
hora8 = '17:00pm - 18:00pm'
hora_reserva_CHOICES = [
(hora1, '9:00am - 10:00am'),
(hora2, '10:00am - 11:00am'),
(hora3, '11:00am - 12:00pm'),
(hora4, '12:00pm - 13:00pm'),
(hora5, '14:00pm - 15:00pm'),
(hora6, '15:00pm - 16:00pm'),
(hora7, '16:00pm - 17:00pm'),
(hora8, '17:00pm - 18:00pm')
]
hora_reserva = models.CharField(
max_length=17,
choices=hora_reserva_CHOICES,
default=hora1
)
Mantención = 'Mantención'
Reparación = 'Reparación'
Limpieza = 'Limpieza'
Servicios_CHOICES = [
(Mantención, 'Mantención'),
(Reparación, 'Reparación'),
(Limpieza, 'Limpieza'),
]
Servicios = models.CharField(
max_length=10,
choices=Servicios_CHOICES,
default=Limpieza,
)
User = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.auto + ' -by ' + self.User.username
url.py
from django.contrib import admin
from django.urls import path
from Main import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home, name='home'),
path('signup/', views.signup, name='signup'),
path('reserva/', views.reserva, name='reserva'),
path('reserva/crear/', views.crearreserva, name='crearreserva'),
path('reserva/<reserva_id>/',
views.detalle_reserva, name='detalle_reserva'),
path('logout/', views.logouto, name='logout'),
path('login/', views.logino, name='login')
]
views.py
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.models import User
from django.http import HttpResponse
from django.contrib.auth import login, logout, authenticate
from .forms import ReservaForm
from .models import Reserva
def home(request):
return render(request, 'Home.html')
def signup(request):
if request.method == 'GET':
return render(request, 'SignUp.html', {
'form': UserCreationForm
})
else:
if request.POST['password1'] == request.POST['password2']:
try:
user = User.objects.create_user(username=request.POST['username'],
password=request.POST['password1'])
user.save()
login(request, user)
return redirect('reserva')
except:
return render(request, 'SignUp.html', {
'form': UserCreationForm,
"error": 'Usuario ya existente'
})
return render(request, 'SignUp.html', {
'form': UserCreationForm,
"error": 'Contraseña no coinside'
})
def reserva(request):
todas = Reserva.objects.filter(User=request.user)
return render(request, 'Reserva.html', {'todas': todas})
def crearreserva(request):
if request.method == 'GET':
return render(request, 'CrearReserva.html', {
'form': ReservaForm
})
else:
try:
form = ReservaForm(request.POST)
nueva_reserva = form.save(commit=False)
nueva_reserva.User = request.user
nueva_reserva.save()
return redirect('reserva')
except ValueError:
return render(request, 'CrearReserva.html', {
'form': ReservaForm,
'error': 'Ingrese datos validos porfavor'
})
def detalle_reserva(request, reserva_id):
reserva = Reserva.objects.get(pk=reserva_id)
return render(request, 'DetalleReserva.html', {
'reserva': reserva
})
def logouto(request):
logout(request)
return redirect('home')
def logino(request):
if request.method == 'GET':
return render(request, 'LogIn.html', {
'form': AuthenticationForm
})
else:
user = authenticate(
request, username=request.POST['username'], password=request.POST['password'])
if user is None:
return render(request, 'LogIn.html', {
'form': AuthenticationForm,
'error': 'Usuario o Contraseña erroneas'
})
else:
login(request, user)
return redirect('reserva')
html
Большое спасибо за помощь в решении моей глупой проблемы
Вам нужно сделать коррекцию для id Reserva url
вот так...
{% for Reserva in todas %}
<a href="{% url 'detalle_reserva' Reserva.id %}">
<li>
<h1>{{Reserva.auto}}</h1>
<p>{{Reserva.Servicios}}</p>
<p>{{Reserva.fecha_reserva}}</p>
<p>{{Reserva.hora_reserva}}</p>
</li>
</a>
{% endfor %}