2017-05-08 40 views
2

我有一个NoReverseMatch错误。它显示的模式不是它应该与之相关联的模式。 错误:为什么Django模板模式与错误视图匹配并导致NoReverseMatch错误?

NoReverseMatch at /games/list/ 
Reverse for 'game_single' with keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: ['games/(?P<pk>\\d+)/$'] 

我不明白为什么它试图扭转为 'game_single' 时的观点被认为是 'GAME_LIST'

我的主要urls.py:

从Django中。 conf.urls进口包括URL 从django.contrib中导入管理

from django.conf.urls import include, url 

从django.contrib中导入管理

urlpatterns = [ 
    #leaving the r'' blank between the parenthesis makes it the 
    #default URL 
    url(r'', include('blog.urls')), 
    url(r'^admin/', admin.site.urls), 
    url(r'^games/', include('code_games.urls')), 
] 

我code_games应用urls.py:

from django.conf.urls import url 
from . import views 

urlpatterns = [ 
    url(r'^list/$', views.game_list, name='game_list'), 
    url(r'(?P<pk>\d+)/$', views.game_single, name='game_single'), 
    url(r'^new/$', views.game_new, name='game_new'), 
] 

我code_games应用views.py

#view for seeing all games 
def game_list(request): 
    games = Game.objects.filter(published_date__lte=timezone.now()).order_by('-published_date') 
    return render(request, 'code_games/game_list.html', {'games': games}) 


#view for seeing/playing an individual game 
def game_single(request, pk): 
    games = get_object_or_404(Game, pk=pk) 
    return render(request, 'code_games/game_single.html', {'games': games}) 

#view for adding a new game 
def game_new(request): 
    if request.method == "POST": 
     form = GameForm(request.POST) 
     if form.is_valid(): 
      post = form.save(commit=False) 
      post.save() 
      return redirect('game_single', pk=post.pk) 
    else: 
     form = GameForm() 
    return render(request, 'code_games/game_new.html', {'form': form}) 

我的模板:

{% extends 'code_games/base.html' %} 

{% block content %} 
    {% for game in games %} 
     <div class="post"> 
      {% if game.image != 'Null' %} 
      <a href="{% url 'game_single' pk=post.pk %}"> 
       <img src="/static/css/images/{{game.image}}" style="width:640px;height:228px;"> 
      </a> 
      {% endif %} 
      <div class="date"> 
       {{ game.published_date }} 
      </div> 
      <h1><a href="{% url 'game_single' pk=post.pk %}">{{ game.title }}</a></h1> 
      <hr> 
     </div> 
    {% endfor %} 
{% endblock %} 

我真的不明白为什么url正在尝试与game_sin进行模式匹配当它应该是game_list视图时查看gle视图。

回答

1

当我问这个,我找到了答案....

我不得不改变

<a href="{% url 'game_single' pk=post.pk %}"> 

<a href="{% url 'game_single' pk=game.pk %}"> 

<a href="{% url 'game_single' pk=post.pk %}">{{ game.title }}</a> 

<a href="{% url 'game_single' pk=game.pk %}">{{ game.title }}</a>