簡體   English   中英

Django NoReverseMatch錯誤,命名空間錯誤,模板渲染期間發生錯誤

[英]Django NoReverseMatch error with namespacing, Error during template rendering

我現在整天都在看這個,但我無法弄清楚。

目前在加載hotel / index.html時出現錯誤:

NoReverseMatch at /hotel/

Reverse for 'activities' with arguments '(2,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['hotel/activities/']

Request Method:     GET
Request URL:    http://127.0.0.1:8000/hotel/
Django Version:     1.8.5
Exception Type:     NoReverseMatch
Exception Value:    

Reverse for 'activities' with arguments '(2,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['hotel/activities/']

Exception Location:     /usr/local/lib/python3.4/dist-packages/django/core/urlresolvers.py in _reverse_with_prefix, line 495
Python Executable:  /usr/bin/python3
Python Version:     3.4.3
Python Path:    

['/home/johan/sdp/gezelligehotelletjes_com',
 '/usr/lib/python3.4',
 '/usr/lib/python3.4/plat-x86_64-linux-gnu',
 '/usr/lib/python3.4/lib-dynload',
 '/usr/local/lib/python3.4/dist-packages',
 '/usr/lib/python3/dist-packages']

Server time:    Sun, 25 Oct 2015 16:18:00 +0000
Error during template rendering

In template /home/johan/sdp/gezelligehotelletjes_com/hotel/templates/hotel/index.html, error at line 8
Reverse for 'activities' with arguments '(2,)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['hotel/activities/']
1   {% load staticfiles %}
2   
3   <link rel="stylesheet" type="text/css" href="{% static 'hotel/style.css' %}" />
4   
5   {% if netherlands_city_list %}
6       <ul>
7           {% for city in netherlands_city_list %}
8   
                  <li><a href="
      {% url 'hotel:activities' city.id %}
      ">{{ city.name }}</a></ul>


9           {% endfor %}
10      </ul>
11  {% else %}
12      <p>No polls are available.</p>
13  {% endif %}

這是我認為與該錯誤有關的代碼。

網站/ urls.py

from django.conf.urls import include, url
from django.contrib import admin

import hotel.views

urlpatterns = [
    url(r'^hotel/', include('hotel.urls', namespace='hotel')),
    url(r'^admin/', include(admin.site.urls)),
]

酒店/ urls.py

from django.conf.urls import include, url
from django.contrib import admin

from hotel import views

urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),
    url(r'^activities/$', views.ActivitiesView.as_view(), name='activities'),
]

酒店/ index.html的

{% load staticfiles %}

<link rel="stylesheet" type="text/css" href="{% static 'hotel/style.css' %}" />

{% if netherlands_city_list %}
    <ul>
        {% for city in netherlands_city_list %}
            <li><a href="{% url 'hotel:activities' city.id %}">{{ city.name }}</a></ul>
        {% endfor %}
    </ul>
{% else %}
    <p>No cities are available.</p>
{% endif %}

酒店/ activities.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

</body>
</html>

和酒店/views.py

from django.shortcuts import render
from django.views import generic
from django.core.urlresolvers import reverse
from .models import Hotel
from base.models import City


class IndexView(generic.ListView):
    template_name = "hotel/index.html"
    context_object_name = "netherlands_city_list"

    def get_queryset(self):
        return City.objects.filter(state__country__name__exact="Netherlands").order_by('name')[:5]


class ActivitiesView(generic.ListView):
    template_name = "hotel/activities.html"

我現在整天都在四處張望,但無法弄清楚。 (雖然這可能是較小的事情之一。)

我希望有人可以解決這個問題。

提前致謝。

您的問題出在您的URL中:

url(r'^activities/$', views.ActivitiesView.as_view(), name='activities'),

您的模板調用arguments活動:

<a href="{% url 'hotel:activities' city.id %}">

但是,此參數未作為參數傳遞。 解決方案是:

url(r'^activities/(?P<city>[0-9]+)/$', views.ActivitiesView.as_view(), name='activities'),

在您的模板中,您嘗試與位置參數(城市ID)反向匹配

{% url 'hotel:activities' city.id %}

但是,在您的urlpatterns中,您尚未在url定義中設置任何參數規則

url(r'^activities/$', views.ActivitiesView.as_view(), name='activities'),

所以,你有這個錯誤

Reverse for 'activities' with arguments '(2,)' ... not found. 

檢查文檔以完成您打算做的事情。

https://docs.djangoproject.com/en/1.8/topics/http/urls/

可能您需要在網址中添加城市ID匹配的正則表達式組

url(r'^activities/([0-9]+)/$', views.ActivitiesView.as_view(), name='activities'),

(這只是一個主意,您需要根據情況進行修改)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM