Python Django:-NoReverseMatch错误
我正在跟随DjangofGirls.org教程制作我的第一个django站点。我正在尝试“扩展你的模板”阶段,以便在我的网站中创建一个使用通用模板的文章链接 我一直被抛出错误:“NoReverseMatch at/,与参数“()”和关键字参数“{pk':''}”相反的'post_detail',未找到。尝试了1个模式:['post/(?p\d+/$”]”” 一些变量和文件名可能看起来很奇怪,网站的使用是音乐采样,但我使用了教程的名称,以防出错 整个项目的My URL.py:Python Django:-NoReverseMatch错误,python,html,django,namespaces,web,Python,Html,Django,Namespaces,Web,我正在跟随DjangofGirls.org教程制作我的第一个django站点。我正在尝试“扩展你的模板”阶段,以便在我的网站中创建一个使用通用模板的文章链接 我一直被抛出错误:“NoReverseMatch at/,与参数“()”和关键字参数“{pk':''}”相反的'post_detail',未找到。尝试了1个模式:['post/(?p\d+/$”]”” 一些变量和文件名可能看起来很奇怪,网站的使用是音乐采样,但我使用了教程的名称,以防出错 整个项目的My URL.py: from djang
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('sample.urls')),
]
特定应用程序的My urls.py(示例):
基本模板中的代码行是指向网站中另一个页面的链接:
<a href="{% url 'post_detail' pk=post.pk %}">How to sample</a>
我看到另一个人在一个类似的项目中提出了这个问题,并将其修复,但我不太了解答案,无法对我的问题进行更改(我不知道名称空间是什么)。如果您有多个URL.py,名称空间可以告诉django如何处理该请求。因此,在通常情况下,名称空间是应用程序名称。在您的项目url.py中,尝试将
r'
替换为r'^'
。前者匹配所有URL,而后者匹配字符串的开头。。请尝试使用此参数而不是关键字参数。
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>