Django:从数据库创建对象名称的 HTML 列表时'Could not parse'错误



我正在尝试为学生和教授创建一个网站,其中包括一个课程数据库。每门课程都是一个模型Kurs,其中包括以下领域,即教授开设课程和课程名称:

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

在外壳中,我可以轻松找到给定教授开设的所有课程:

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

因此,在上面,我了解到用户名为"stefantestowy"的教授开设了一门课程,"Estetyka 7"。

教授登录后(我使用的是内置的 Django 登录机制(,他或她被重定向到 usersite.html,它应该显示有关教授的信息,包括他或她正在运行的课程名称列表。但是,如果我想粗略地使用在 shell 中工作的语法来生成 HTML 列表,我会遇到"无法解析"错误。也就是说,我的用户站点.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'

也就是说,该名称在命令行管理程序中成功使用,但"无法解析"错误仍然存在。我做错了什么?

其他详细信息(如果可能有帮助(:settings.py 包含

LOGIN_REDIRECT_URL = '/polls/usersite'

网址.py的网址模式包含

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

views.py 中的相关视图只是最小的

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

提前感谢!

{% 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

相关内容

最新更新