Django导航栏
我是Django的新手,开始学习。我想将导航栏添加到不同的页面,如[菜单],[主页],[联系人]。Django导航栏
我该如何使用Django模板做到这一点? 我的模板的一部分。
<nav>
<a href="{% url 'polls/detail' %}">Detail</a>
<a href ="{% url 'polls/index'%}">Home</a>
<a href ="{%url 'polls/contact'%}">Contact</a>
</nav>
</header>
<section>
{% if latest_question_list %}
<ul id="choice">
{% for question in latest_question_list %}
<li><a href="/polls/{{ question.id }}/">{{ question.question_test }}</a></li>
{% endfor %}
</ul>
下面ismy url.conf`
patterns = [
url(r'^index/$',views.index,name='index'),
url(r'^(?P<question_id>[0-9]+)/$',views.detail,name='detail'),
url(r'^(?P<question_id>[0-9]+)/result/$',views.result,name='result'),
url(r'^(?P<question_id>[0-9]+)/vote/$',views.vote,name='vote'),
url(r'^contact/$',views.contact,name='contact'),
]` 下面是我的views.py
from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse ,Http404,HttpResponseRedirect
from .models import Question ,Choice
from django.core.urlresolvers import reverse
# Create your views here.
def index(request):
try:
latest_question_list = Question.objects.all()
except:
raise Http404("Question does not exist")
return render(request, 'polls/index.html', context= {'latest_question_list': latest_question_list})
def detail(request,question_id):
try:
question = Question.objects.get(pk=question_id)
return render(request,'polls/detail.html', context= {'question':question})
except Question.DoesNotExist:
raise Http404("Question does not exists")
def vote(request, question_id):
question = Question.objects.get(pk=question_id)
try:
selected_choice = question.choice_set.get(pk=request.POST['choice'])
except(KeyError,Choice.DoesNotExist):
return render(request,'polls/detail.html',{
'question':question,
'error_message':'You did not select a choice'
})
else:
selected_choice.votes+=1
selected_choice.save()
return HttpResponseRedirect(reverse('result',args=(question_id)))
def result(request, question_id):
question = get_object_or_404(Question, pk=question_id)
return render(request, 'polls/result.html', {'question': question})
def contact(request):
return render(request,'polls/contact.html')
下面是错误的,我得到 反转e用于'polls/detail'参数'()'和关键字参数'{}'未找到。尝试了0个模式:[]
尝试为您的urls.py中的URL分配一个名称,然后在您的模板中通过名称调用它们。
urls.py:
urlpatterns = [
url(r'^/polls/about/', views.about.as_view(), name='about'),
url(r'^/polls/contact/', views.contact.as_view(), name='contact'),
...
]
模板: {% url 'about' %}
更多信息请参阅文档:
https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url
https://docs.djangoproject.com/ja/1.9/topics/http/urls/#url-namespaces
已更新答案: 您的详细信息,投票和结果页面都指向您的问题模型的特定实例。这通过您的urls.py中的(?P<question_id>[0-9]+)
行以及视图函数变量的一部分显示。
您需要在您的视图语境词典传递一个有效的question_id到您的模板,然后在您的{%URL%}标记,question_id。
因此,举例来说,如果你想增加你的索引页上的链接的第一个问题的细节,你需要做以下修改:
在views.py:
def index(request):
try:
latest_question_list = Question.objects.all()
question = latest_question_list[0]
except:
raise Http404("Question does not exist")
return render(request, 'polls/index.html', context ={'latest_question_list': latest_question_list, 'question':question})
然后在你的模板中,你可以链接到这个具体问题的细节,如下所示:
<a href="{% url 'detail' question_id=question.id %}">Detail</a>
NoReverseMatch在/民意调查/指数/ 反向'细节'的参数'()'和关键字参数'{}'未找到。尝试1个模式:['polls /(?P
你有什么问题? –
它给了我错误没有反向网址 – shankar
请求网址:\t http://127.0.0.1:8080/static/polls/index 'polls \ index'找不到 – shankar