【发布时间】: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