2013-02-19 37 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