2017-09-13 6 views
1

私はdjango 1.10を使用しています。リバース機能の仕組みを知りたいこれはdjangoを使った基本的なチャットアプリケーションです。ファイルがある7のもの以下 index.htmlで:私はラインで立ち往生していないのですNoReverseMatch/<urls>

enter image description here

viwes.py

from django.shortcuts import render 
from django.http import HttpResponse 
from django.shortcuts import get_object_or_404 

from chat.models import ChatRoom 

def index(request): 
    chat_rooms= ChatRoom.objects.order_by('name')[:5] 
    context = { 
     'chat_list' : chat_rooms 
    } 
    return render(request,'chats/index.html', context) 


def chat_room(request,chat_room_id): 
    chat = get_object_or_404(ChatRoom, pk =chat_room_id) 
    return render(request,'chats/chat_room.html', {'chat':chat}) 

チャット/ urls.py

from django.conf.urls import url 
from django.urls import reverse 

from chat import views 

urlpatterns = [ 
    url(r'^$', views.index, name='index'), 
    url(r'^(?P<chat_id>[0-9]+)/$', views.chat_room, name='chat_room'), 
] 

インデックスを。 html

{% if chat_list %}</pre> 
<ul> 
    <ul>{% for chat in chat_list %}</ul> 
</ul> 
<ul> 
    <ul> 
     <li><a id="" href="{% url 'chat_room' chat.id %}"> {{ chat.name }}</a></li> 
    </ul> 
</ul> 
<ul>{% endfor %}</ul> 
<pre> 



{% else %} 

No chats are available. 

{% endif %} 

どのような提案も大歓迎です!

+1

あなたのコードにそれをしてください適用フルエラースタック –

+0

あなたが試した 'url'は?これを 'localhost'で実行すると' 127.0.0.1:8000'があなたのインデックスになり、 '127.0.0.1:8000/id'があなたのチャットルームになります。 'id'は任意の数字でなければなりません。それ以外の 'url'は定義されていません。あなたが正しい 'url'を入力したことを確認してください。 –

+0

127.0.0.1:8000/chats/ –

答えて

0

あなたがタイプミスを持っている私はあなたのreealコードで見ることができるよう:

{% url 'chat_room' chat_room_id %} 
        <!-- ^^^^^^^^^^ --> 

が、問題の正しい

{% url 'chat_room' chat.id %} 

を書くだけ追加し、

+0

ありがとうございます!それは働いている! –

+0

chat.idの理由を教えていただけますか? –

+0

あなたのループ 'chat'にあなたのモデル' ChatRoom'のインスタンスですので、あなたは 'id'を使用する必要があります –