模板语言问题。我想将我想要的句子的ID传递到url,并在屏幕上只显示传递的ID的句子。网址:
path('sentenceCard/<str:listName>/<int:listId>/', views.sentenceCard, name='sentenceCard')
views.py:
def sentenceCard(request, listName, listId):
sentence = Sentence.objects.filter(Classification=listName)
return render(request, 'english_note/sentenceCard.html', {'sentences':sentence, 'listId': listId})
html:
<a href='#'>{{sentences.0.korean_sentence}}<br>
<a href='#'>{{sentences.1.korean_sentence}}<br>
模板变量中的变量?像这样?{{sentences.listId.korean_sentence}}
在句子中循环。如果我了解你的设置,可以这样做。请参阅有关url
内置标记的文档。
{% for sentence in sentences %}
<a href='{% url 'sentenceCard' listName=sentence.classification listId=listId %}'>{{ sentence.korean_sentence }}</a><br />
{% endfor %}
您可能需要在url路径名称前面加上您的应用程序名称:{% url 'yourapp:sentenceCard' listName=....%}
没有要求,但一两个建议可能会让你的Django编码更容易:
- 小写您的字段。
Classification
变为classification
- 使用
def sentence_card(request, list_name, list_id):
- 筛选时,用复数形式命名查询集:
sentences = Sentence.objects.filter(classification=list_name)
- 当可能的上下文变量模仿对象
{'sentences':sentences}
时
没有什么是绝对能让代码正常工作的,但当以后解决问题时,最好能根据具体情况知道你正在处理什么样的事情。特别是在Django中,当您开始进行一些高级过滤时,它将有所帮助,因为您不必检查如何命名字段。知道大写的是类,小写的是实例也会派上用场。