我只想在屏幕上显示已传递id的句子



模板语言问题。我想将我想要的句子的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中,当您开始进行一些高级过滤时,它将有所帮助,因为您不必检查如何命名字段。知道大写的是类,小写的是实例也会派上用场。

最新更新