2016-03-18 68 views
-1

我已经尝试了几个选项和帮助,但url不匹配。这里是我的代码看起来像url不匹配django

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/ 
+1

在模板中定义'ref'? – ilse2005

+0

'ref'来自您的* index.html *模板的位置? – rnevius

+0

显示您的索引视图(其呈现'index.html') –

回答

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

感谢它现在工作@Parag Tyagi -morpheus- – Tushortz

-1
context = { 
     'verse': Verse.objects.get(reference = ref) 
    } 

在这个“节”是HTML模板和变量名Verse.objects.get(reference = ref)是Django的网页时替换“诗”变量HTML中的价值渲染。

它显示localhost:8000/bible/study//,因为您尚未在您的上下文中为'ref'变量定义任何值。

替换在HTML的“裁判”与“诗”:

<a href="`{% url 'bible:study' verse %}`"> Study</a> 
+0

该上下文被用于完全不同的模板(* verse/study.html *) – rnevius

+0

这给出了一个错误。 – Tushortz

+0

@mevius是的,它意味着像链接从'index.html'到'verse/study.html'的网页。所以 – Tushortz