2017-06-04 31 views
0

我試圖建立一個Django的應用程序,讓我訪問一些包含學生(高度)對象的組。我不能讓海拔對象顯示,壽。

Elevi urls.py

from django.conf.urls import url 
from . import views 

app_name = 'elevi' 

urlpatterns = [ 
    #/ 
    url(r'^$', views.index, name = 'index'), 
    #/Grupe/id 
    url(r'^grupe/(?P<grupa_id>[0-9]+)/$', views.connect, name="connect"), 
    #/Grupe/id/elevi_id 
    url(r'^grupe/(?P<grupa_id>[0-9]+)/(?P<elev_id>[0-9]+)/$', views.elev_individual, name="elev_individual") 
    ] 

Elevi的views.py

from django.shortcuts import render,get_object_or_404 
from .models import Grupa,Elev 

def index(request): 
    toate_grupele = Grupa.objects.all() 
    context = {"toate_grupele" : toate_grupele} 
    return render(request,'Elevi/test.html',context) 

def connect(request,grupa_id): 
    grupa = get_object_or_404(Grupa, pk = grupa_id) 
    return render(request,'Elevi/connect.html',{'grupa':grupa}) 

def elev_individual(request,elev_id): 
    elev = get_object_or_404(Elev, pk = elev_id) 
    return render(request,'Elevi/elev_individual.html',{'elev':elev}) 

的test.html

{% if toate_grupele %} 
<ul> 
    {% for grupa in toate_grupele %} 
     <li><a href ="{% url 'elevi:connect' grupa.id %}">{{ grupa.nume_grupa }}</a></li> 
    {% endfor %} 
</ul> 
{% else %} 
    <p>Nu sunt grupe salvate</p> 
{% endif %} 

connect.h TML

<h1>{{ grupa.nume_grupa }}</h1> 
<h3>Lista Elevi:</h3> 

<ul> 
    {% for elev in grupa.elev_set.all %} 
     <li><a href="{% url 'elevi:elev_individual' elev.id %}">{{ elev.nume_elev }} {{ elev.prenume_elev }}</a></li> 
    {% endfor %} 
</ul> 

elev_individual.html

<p>{{ elev.nume_elev }} {{ elev.prenume_elev }}</p> 

回答

0

URL模式不匹配視圖參數

視圖

def index(request): #url pattern don't need any argument 
def connect(request,grupa_id): #url pattern needs one argument 
def elev_individual(request,elev_id): #requires one argument 

URL

url(r'^$', views.index, name = 'index'), # good 
url(r'^grupe/(?P<grupa_id>[0-9]+)/$', views.connect, name="connect") #good 

如果看看錯誤消息,elev_individual需要在def elev_individual(request,elev_id):視圖方法中有兩個參數。爲了解決這個問題,要麼刪除第二個參數,使

['grupe/(?P<grupa_id>[0-9]+)/(?P<elev_id>[0-9]+)/$'] 

成爲

['grupe/(?P<elev_id>[0-9]+)/$'] 

或作爲第二個參數添加另一個參數elev_id到您的視圖,使其成爲

def elev_individual(request,grupa_id, elev_id): 

和過濾器根據需要

相關問題