2016-04-30 68 views
-2

私はDjangoを初めて使って学習を始めました。私は[メニュー]、[ホーム]、[連絡先]のような異なるページにナビゲーションバーを追加したいと思います。Djangoのナビゲーションバー

どうすればDjangoテンプレートを使用できますか?私のテンプレートの一部。 ismy以下

<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> 

以下
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') 

url.conf`私は、エラーになります取得する リバーe 'polls/detail'の引数 '()'とキーワード引数 '{}'が見つかりません。 0個のパターンが試行されました:[]

+0

あなたは何を持っていますか? –

+0

それは私に逆のURLのようなエラーを与えます – shankar

+0

リクエストURL: http://127.0.0.1:8080/static/polls/index 'polls \ index'は見つかりませんでした – shankar

答えて

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'), 
    ... 
] 

テンプレート:

https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url

https://docs.djangoproject.com/ja/1.9/topics/http/urls/#url-namespaces

{% url 'about' %}

は、より多くの情報のためのマニュアルを参照してください更新された回答: 詳細、投票、および結果ページは、すべてあなたの質問モデルの特定のインスタンスを指します。これは、あなたのurls.pyの中に、そしてビュー関数変数の一部として、(?P<question_id>[0-9]+)行で示されています。

ビューコンテキスト辞書の有効なquestion_idをテンプレートに渡し、そのquestion_idを{%url%}タグに含める必要があります。その後

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}) 

:views.pyで

:あなたはインデックスページで最初の質問の詳細へのリンクを追加したい場合

したがって、たとえば、次の変更をする必要がありますあなたのテンプレートでは、次のようなこの特定の質問の詳細にリンクすることができます:

<a href="{% url 'detail' question_id=question.id %}">Detail</a> 
+0

NoReverseMatch at/polls/index/ 引数 '()'とキーワード引数 '{}'を使用して '詳細'を取り消します。 1つのパターンが試されました:['polls /(?P [0-9] +)/ $ '] リクエスト方法:\t リクエストURL GET:\t http://127.0.0.1:8080/polls/index/ Djangoのバージョン:1.9.4 \t 例外タイプを: \t NoReverseMatch 例外値:\t 引数 '()'およびキーワード引数 '{}'を使用して '詳細'を反転させます。 1つのパターンが試されました:['polls /(?P [0-9] +)/ $'] – shankar

関連する問題