【问题标题】:Django: - NoReverseMatch errorDjango: - NoReverseMatch 错误
【发布时间】:2017-08-05 12:39:38
【问题描述】:

我正在按照 djangoforgirls.org 教程制作我的第一个 django 网站。我正在尝试“扩展您的模板”阶段,以链接到我网站中使用通用模板的文章。

我不断收到错误消息:“NoReverseMatch at /, Reverse for 'post_detail' with arguments '()' and keyword arguments '{'pk': ''}' not found. 1 pattern(s) tried: [ 'post/(?P\d+)/$']"

一些变量和文件名可能看起来很奇怪,网站的用途是音乐采样,但我使用了教程的名称以防万一。

整个项目的 urls.py:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', include('sample.urls')),
]

特定应用程序的我的 urls.py(示例):

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

urlpatterns = [
    url(r'^$', views.post_list, name='post_list'),
    url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'),
]

我的应用程序views.py:

from django.utils import timezone
from .models import AudioSample
from django.shortcuts import render, get_object_or_404

def post_list(request):
    samples = AudioSample.objects.order_by('length')
    return render(request, 'blog/post_list.html', {'samples': samples})

def post_detail(request, pk):
    post = get_object_or_404(AudioSample, pk=pk)
    return render(request, 'blog/post.html', {'post': post})

以及来自基本模板的代码行,它是网站中另一个页面的链接:

<a href="{% url 'post_detail' pk=post.pk %}">How to sample</a>

我看到另一个人用类似的项目here 提出了这个问题并得到了修复,但我不明白答案足以对我的进行更改(我不明白命名空间是什么)。

【问题讨论】:

标签: python html django namespaces web


【解决方案1】:

在您的项目 urls.py 中,尝试将 r'' 替换为 r'^'。前者匹配所有个url,而后者匹配字符串的开头。

【讨论】:

    【解决方案2】:

    如果你有多个 urls.py,命名空间可以告诉 django 如何处理请求。所以一般情况下namespace就是APP的名字。

    【讨论】:

      猜你喜欢
      • 2015-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-15
      • 2017-07-30
      • 2017-03-14
      • 2017-07-27
      相关资源
      最近更新 更多