2013-02-19 46 views
0

我在django中做了一個應用程序,並且我完全熟悉Python和框架django。在django中構建url

我的問題是我無法弄清楚如何得到這個網址:

project/2/ticket/1 

林在project/2並得到了我的模板鏈接到project/2/ticket/1的鏈接。 我得到的錯誤是NoReverseMatch at /project/1和使用的代碼IM是:

url.py

urlpatterns = patterns('', 

# Project urls below 
url(r'^project/(?P<project_id>\d+)$', 'project_manager.views.project_list', name='project_list_with_ticket'), 
url(r'^project/(?P<project_id>\d+)/ticket/(?P<ticket_id>\d+)$', 'project_manager.views.ticket_list', name='ticket_list'), 

# Uncomment the next line to enable the admin: 
url(r'^admin/', include(admin.site.urls)), 

views.py

def ticket_list(request, ticket_id = None): 

if ticket_id: 

    tickets = get_list_or_404(Ticket.objects.filter(id = ticket_id)) 

    return render(request, 'tickets/details.html', {"tickets" : tickets }) 

else: 

    return render(request, 'projects/list.html', {'projects' : projects }) 

我的模板

{% for ticket in tickets %} 
    <div class="tickets"> 
     <a href="{% url ticket_list ticket.id %}">{{ ticket }}</a> 
    </div> 
{% endfor %} 

編輯 - 它說沒有ticket_list,但也有?

回答

3

您正致電ticket_list URL /查看與一個變量 - ticket.id - 當它需要兩個。

您的模板:

<a href="{% url ticket_list ticket.id %}">{{ ticket }}</a>

你傳遞一個ticket.id,它也需要一個project.id,你可以在你的網址看到:

url(r'^project/(?P<project_id>\d+)/ticket/(?P<ticket_id>\d+)$', 'project_manager.views.ticket_list', name='ticket_list'),

你需要改變你的模板傳遞您在URL中要求的兩個變量。您還沒有發佈你如何得到該項目的ID,所以我的代碼將張貼可能不完全是工作,但你需要的東西是這樣的:

<a href="{% url ticket_list ticket.project.id ticket.id %}">{{ ticket }}</a>

的變量傳遞需要與一致的順序他們在您的網址中被要求的方式。由於您的網址要求輸入project_id,然後輸入ticket_id,因此請確保按照上述順序將它們傳遞到您的模板中。

+0

謝謝,作品完美! :D我儘快做出這個安慰 – Rovdjuret 2013-02-19 17:08:50