0

私はdjangoでアプリケーションを作成しており、言語のpythonとフレームワークのdjangoはまったく初めてです。

私の問題は、この URL を取得する方法がわからないことです。

project/2/ticket/1

にリンクproject/2しているテンプレートにリンクがありますproject/2/ticket/1。私が得るエラーはNoReverseMatch at /project/1、使用しているコードは次のとおりです。

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)),

)

ビュー.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 はありませんが、ありますか?

4

1 に答える 1

3

2つの変数が必要な場合ticket_listは1つの変数でURL/ビューを呼び出しています。ticket.id

テンプレート:

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

あなたはを渡しています、そしてあなたがあなたのURLで見ることができるように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>

変数が渡される順序は、URLで要求される方法と一致している必要があります。URLはa project_id、次にaを要求するのでticket_id、上記の順序でテンプレートにそれらを渡すようにしてください。

于 2013-02-19T17:00:54.577 に答える