#django #django-models #django-views #django-forms #django-templates
#django #django-модели #django-представления #django-forms #django-шаблоны
Вопрос:
Я пытаюсь сопоставить разные элементы, используя pk (первичный ключ). Я использовал его в своем urls.py , views.py а также файл шаблонов. Но я ошибка NoReverseMatch. Я также попытался изменить str на int в urls.py файл, но он по-прежнему выдавал ту же ошибку. Я надеюсь, что смогу попросить кого-нибудь любезно помочь. Спасибо
журнал ошибок
Environment:
Request Method: GET
Request URL: http://localhost:8000/update-reservation/1/
Django Version: 3.1.4
Python Version: 3.7.3
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'core',
'dashboard',
'widget_tweaks',
'phonenumber_field']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:UsersHabibDocumentsdjangoFIVERRadam_mailktemplatesdashboardsuperadminbase.html, error at line 41
Reverse for 'updatebar' with keyword arguments '{'updatebar': ''}' not found. 1 pattern(s) tried: ['updatebar/(?P<pk>[^/] )/
views.py
def UpdateUserBar(request, pk):
user = request.user.id
user_email = request.user.email
bar = Bar.objects.filter(user_id=user)
form = UpdateBar(instance=bar)
if request.method == 'POST':
form = UpdateBar(request.POST, instance=bar)
if form.is_valid():
form.save()
return redirect('/updatebar')
messages.success(request, 'Bar Information Updated successfully')
else:
return redirect('/dashboard')
messages.error(request, 'Only Post method is accepted')
context = {"form":form, "user_email":user_email}
return render(request, "dashboard/super/landlord/create_bar.html", context)
urls.py
from django.urls import path
from .views import *
urlpatterns = [
path('updatebar/<str:pk>/', UpdateUserBar, name="updatebar"),
]
template.html
<li {% if request.path == '/updatebar/' %}class="active"{% endif %}><a href="{% url 'updatebar' updatebar=updatebar.pk %}"><i class="ion-plus-round"></i> <span class="nav-label">Create Table</span></a>
</li>
Ответ №1:
Как определено в вашем urls.py , для "update_bar" требуется параметр, в данном случае <str:pk>. Вам нужно переписать вашу функцию перенаправления в views.py чтобы включить этот параметр, например:
return redirect('updatebar', pk=pk)
Комментарии:
1. @coderboy Ваш шаблон ссылается на параметр как "панель обновления", когда он действительно называется "pk". Замените ссылку там на: <a href="{% url 'updatebar' pk=updatebar.pk %}">
2. Спасибо за вашу помощь. Теперь я снова не вижу эту ошибку, но по какой-то неизвестной причине всякий раз, когда я включаю ее туда, она не позволяет мне войти в eve с правильными учетными данными. и если я войду в систему, он выведет меня из системы.
]
31 : <aside class="left-panel">
32 : <div class="logo">
33 : <a href="{% url 'dashboard' %}" class="logo-expanded">
34 : <img src="{% static 'logo.png' %}" style="background-color: white; width: 140px; height: 65px;" alt="logo">
35 : </a>
36 : </div>
37 : <nav class="navigation">
38 : <ul class="list-unstyled">
39 : <li {% if request.path == '/dashboard/' %} class="active" {% endif %}><a href="{% url 'dashboard' %}"><i class="ion-home"></i> <span class="nav-label">Dashboard</span></a>
40 : </li>
41 : <li {% if request.path == '/updatebar/' %}class="active"{% endif %}><a href=" {% url 'updatebar' updatebar=updatebar.pk %} "><i class="ion-plus-round"></i> <span class="nav-label">Create Table</span></a>
42 : </li>
43 : <li {% if request.path == '/add-reservation/' %}class="active"{% endif %}><a href="{% url 'add' %}"><i class="ion-plus-round"></i> <span class="nav-label">Add Reservations</span></a>
44 : </li>
45 : <li {% if request.path == '/view-reservations/' %}class="active" {% endif %}><a href="{% url 'view_reservations' %}"><i class="ion-folder"></i> <span class="nav-label">View Reservations</span></a>
46 : </li>
47 : <li {% if request.path == '/profile/' %}class="active"{% endif %}><a href="{% url 'profile' %}"><i class="ion-person"></i> <span class="nav-label">Profile</span></a></li>
48 : <li class=""><a href="{% url 'logout' %}"><i class="ion-log-out "></i> <span class="nav-label">Logout</span></a>
49 : </li>
50 : </nav>
51 : </aside>
Traceback (most recent call last):
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangocorehandlersexception.py", line 47, in inner
response = get_response(request)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangocorehandlersbase.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangocontribauthdecorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:UsersHabibDocumentsdjangoFIVERRadam_mailkdashboardviews.py", line 118, in UpdateReservation
return render(request, "dashboard/super/admin/update_reserve.html", context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangoshortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplateloader.py", line 62, in render_to_string
return template.render(context, request)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebackendsdjango.py", line 61, in render
return self.template.render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 170, in render
return self._render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 162, in _render
return self.nodelist.render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 938, in render
bit = node.render_annotated(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 905, in render_annotated
return self.render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplateloader_tags.py", line 150, in render
return compiled_parent._render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 162, in _render
return self.nodelist.render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 938, in render
bit = node.render_annotated(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatebase.py", line 905, in render_annotated
return self.render(context)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangotemplatedefaulttags.py", line 446, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangourlsbase.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:UsersHabibDocumentsdjangoFIVERRvenvlibsite-packagesdjangourlsresolvers.py", line 685, in _reverse_with_prefix
raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /update-reservation/1/
Exception Value: Reverse for 'updatebar' with keyword arguments '{'updatebar': ''}' not found. 1 pattern(s) tried: ['updatebar/(?P<pk>[^/] )/views.py
urls.py
template.html
Ответ №1:
Как определено в вашем urls.py , для "update_bar" требуется параметр, в данном случае <str:pk>. Вам нужно переписать вашу функцию перенаправления в views.py чтобы включить этот параметр, например:
Комментарии:
1. @coderboy Ваш шаблон ссылается на параметр как "панель обновления", когда он действительно называется "pk". Замените ссылку там на: <a href="{% url 'updatebar' pk=updatebar.pk %}">
2. Спасибо за вашу помощь. Теперь я снова не вижу эту ошибку, но по какой-то неизвестной причине всякий раз, когда я включаю ее туда, она не позволяет мне войти в eve с правильными учетными данными. и если я войду в систему, он выведет меня из системы.
]
views.py
urls.py
template.html
Ответ №1:
Как определено в вашем urls.py , для «update_bar» требуется параметр, в данном случае <str:pk>. Вам нужно переписать вашу функцию перенаправления в views.py чтобы включить этот параметр, например:
Комментарии:
1. @coderboy Ваш шаблон ссылается на параметр как «панель обновления», когда он действительно называется «pk». Замените ссылку там на: <a href=»{% url ‘updatebar’ pk=updatebar.pk %}»>
2. Спасибо за вашу помощь. Теперь я снова не вижу эту ошибку, но по какой-то неизвестной причине всякий раз, когда я включаю ее туда, она не позволяет мне войти в eve с правильными учетными данными. и если я войду в систему, он выведет меня из системы.