NoReverseMatch位于/ index /

时间:2016-04-02 00:43:51

标签: python django django-urls

我遇到了所有类似的问题而且我无处可去,我已经完成了djangogirls和官方Django教程,据我所知,它应该可以工作。

polls / templates / index.html 文件中,我有:

[...]
{% if forms %}
    <ul>
        {% for form in forms %}
            <li>
                <h1><a href="{% url 'form_detail' pk=form.pk %}">
                    {{ form.fname }}
                </a></h1>
                [...]

在我的 polls / urls.py 文件中,我有这个:

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

app_name = 'polls'
urlpatterns = [
    [...]
    url(r'^index/$', 'polls.views.site_index'),
    [...]
    url(r'^form/(?P<pk>\d+)/$', views.form_detail, name='form_detail'),
    [...]

在我的 polls / views.py 文件中,我有:

from django.shortcuts import render, render_to_response, redirect, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from django.core.context_processors import csrf
from django.core.urlresolvers import reverse
from django.contrib.auth.models import User
from .models import Nform, Choice, Question, Post
from django.template import loader
from django.utils import timezone
from django.views import generic
from django.contrib import auth
from django.db import models
from .form import PostForm

def site_index(request):
    forms = Nform.objects.order_by('-published_date')
    return render_to_response('polls/index.html', {'forms': forms})


def form_detail(request, pk):
    current_form = get_object_or_404(Nform, pk=pk)
    fame = current_form.fname
    latest_question_list = Question.objects.filter(for_form=fame).order_by('-pub_date')
    choice_quest_list = []
    text_quest_list = []
    form = PostForm()
    for i in range(len(latest_question_list)):
        if len(latest_question_list[i].choice_set.all()) == 0:
            text_quest_list.append(latest_question_list[i])
        else:
            choice_quest_list.append(latest_question_list[i])
    return render(request, 'polls/read_only.html', {'choice_quest_list': choice_quest_list, 'text_quest_list': text_quest_list, 'form_name': fame, 'form': form})
[...]

我认为我在某个地方犯了一个非常简单的错误,我会非常感谢任何找到它的人。

请参阅此issue了解图片。

Here是我的代码的链接。

谢谢:)

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为您已在应用程序urls.py中定义了名为app_name的变量。

定义该变量时,它将成为您的url名称空间。

您必须像这样反转您的网址:

<h1><a href="{% url 'polls:form_detail' pk=form.pk %}">

或删除app_name变量以直接使用url名称。

详细了解reversing url names @ django-docs