2016-11-15 27 views
0

我正在嘗試爲學生和教授創建一個包含課程數據庫的網站。每門課程是一個模型航向對接等領域。其中包括以下的人,這是運行過程和課程的名稱教授:Django:在創建數據庫中的對象名稱的HTML列表時出現'無法解析'錯誤

prowadzacy = models.ForeignKey(User) 
nazwa = models.CharField(max_length=200) 

在shell中,我可以很容易地找到所有課程跑由給定教授:

>>> Kurs.objects.filter(prowadzacy__username='stefantestowy') 
<QuerySet [<Kurs: Estetyka 7>]> 

因此,在上面我瞭解到,用戶名爲「stefantestowy」教授運行一個過程,「Estetyka 7」。

在教授登錄後(我使用內置的Django登錄機制),他或她被重定向到usersite.html,它應該顯示有關教授的信息,包括他或她的課程名稱列表她正在跑。但是如果我想粗略地使用在shell中生成HTML列表的語法,我會遇到'無法解析'錯誤。也就是說,我的usersite.html包含以下內容:

Your login is {{request.user.username}} </br> 

Your name is {{request.user.first_name}} {{request.user.last_name}} </br> 

(...) 

Here is a list of your courses: </br> 
<ul> 
{% for kurs in Kurs.objects.filter(prowadzacy__username=request.user.username) %} 
    <li>{{ kurs.nazwa }}</li> 
{% endfor %} 
</ul> 

這導致了以下錯誤:

Could not parse the remainder: '(prowadzacy__username=request.user.username)' from 'Kurs.objects.filter(prowadzacy__username=request.user.username)' 

只是可以肯定,我改變了

prowadzacy__username=request.user.username 

prowadzacy__username='stefantestowy' 

即名字successf ully在shell中使用,但'無法解析'錯誤仍然存​​在。我究竟做錯了什麼?

其他細節,如果能有所幫助的話:settings.py包含

LOGIN_REDIRECT_URL = '/polls/usersite' 

urls.py的URL模式包含

url(r'^usersite/$', views.userviewbasic, name='usersite'), 

和views.py相關視圖僅僅是極小

def userviewbasic(request): 
    return render(request, 'polls/usersite.html') 

在此先感謝!

回答

1
{% for kurs in Kurs.objects.filter(prowadzacy__username=request.user.username) %} 
    <li>{{ kurs.nazwa }}</li> 
{% endfor %} 

這不適用於模板。

您需要像這樣將過濾的列表傳遞給模板。

def userviewbasic(request): 
    kurs = Kurs.objects.filter(prowadzacy__username=request.user.username) 
    return render(request, 'polls/usersite.html', {"kurs": kurs}) 

並且迭代模板中的參數kurs

{% for kur in kurs %} 
    <li>{{ kur.nazwa }}</li> 
{% endfor %} 

您可以在Django這裏閱讀更多關於模板語言:https://docs.djangoproject.com/en/1.10/ref/templates/api/#rendering-a-context

+1

非常感謝你。完美的工作,並將在未來對我有幫助。並感謝文檔鏈接;我必須閱讀更多才能理解_why_這樣的事情在模板中是不可能的...... –

相關問題