我已经尝试了几个选项并提供帮助,但网址不匹配。这是我的代码
在index.py
中,我只选择一个随机的节目在我的主页上显示
def index(request):
rand = random.randint(1, len(Verse.objects.all()))
context = {
'verse': Verse.objects.get(id = rand)
}
return render (request, 'verse/index.html', context)
在views.py
def study(request, ref):
context = {
'verse': Verse.objects.get(reference = ref)
}
return render (request, 'verse/study.html', context)
reference
是我的Verse
模型的字段之一。目的是使用ref
中的urls.py
参数,以便只需将该诗句附加到链接的末尾即可生成不同的页面
在urls.py
url(
regex=r'^study/(?P<ref>)/$',
view = study,
name = 'study'
),
在我的index.html
<a href="{% url 'bible:study' ref %}"> Study</a>
我尝试在链接上突出显示,但这是它生成的内容
localhost:8000/bible/study//
而不是例如:
localhost:8000/bible/study/genesis/
答案 0 :(得分:2)
您没有将ref
参数传递给template
,因此显示为空。根据django文档,默认情况下,未定义的变量被视为空字符串。阅读this。
将您的index
视图修改为
def index(request):
rand = random.randint(1, len(Verse.objects.all()))
verse = Verse.objects.get(id = rand)
context = {
'verse': verse,
'ref': verse.reference
}
return render (request, 'verse/index.html', context)
答案 1 :(得分:-1)
context = {
'verse': Verse.objects.get(reference = ref)
}
在这个'verse'中是html模板的变量名,Verse.objects.get(reference = ref)
是Django在网页渲染过程中替换html中'verse'变量的值。
它显示localhost:8000/bible/study//
,因为您未在上下文中为'ref'
变量定义任何值。
将html中的'ref'替换为'verse':
<a href="`{% url 'bible:study' verse %}`"> Study</a>