我正在尝试为学生和教授创建一个网站,其中包括一个课程数据库。每门课程都是一个模型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