2016-03-18 2 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) это значение, которое Джанго заменяет переменную «стих» в HTML во время веб-страницы рендеринг.

Показан localhost:8000/bible/study// becauseyou не определил какое-либо значение для переменной '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

Смежные вопросы