这是我项目的目录结构
blog
migration
templates
**blog**
__init__.py
admin.py
models.py
tests.py
urls.py
views.py
**mysite**
__init__.py
settings.py
urls.py
wsgi.py
博客是应用程序目录, mysite 是项目目录
这是我的 blog / 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>[0-9]+)/$',views.post_detail, name='post_detail'),
]
这是 blogs / static / post_list.py
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<title></title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
<link rel="stylesheet" href="{%static "css/blog.css"%}">
</head
<body>
<h1>Testings django project</h1>
{% for posts in post%}
<h4><a href="{% url "post_detail" pk=post.pk %}">Title:{{posts.title}}</a></h4>
<p>content:{{posts.text}}</p>
{% endfor %}
</body>
</html>
这是 views.py
来自django.shortcuts导入渲染,get_object_or_404 来自.models import Post
def post_list(request):
posts=Post.objects.all()
return render(request,'blog/post_list.html',{'post':posts})
def post_detail(request,pk):
posts=get_object_or_404(Post,pk=pk)
return render(request,'blog/post_detail.html',{'post':posts})
以下是
以下错误的详细信息*Reverse for 'post_detail' with arguments '()' and keyword arguments '{u'pk': ''}' not found. 0 pattern(s) tried: []
Request Method: GET
Request URL: http://127.0.0.1:8000/
Django Version: 1.8.3
Exception Type: NoReverseMatch
Exception Value:
Reverse for 'post_detail' with arguments '()' and keyword arguments '{u'pk': ''}' not found. 0 pattern(s) tried: []
Exception Location: C:\Python27\lib\site-packages\django\core\urlresolvers.py in _reverse_with_prefix, line 496
Python Executable: C:\Python27\python.exe
Python Version: 2.7.9
Python Path:
['D:\\djangogirls',
'C:\\Windows\\system32\\python27.zip',
'C:\\Python27\\DLLs',
'C:\\Python27\\lib',
'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk',
'C:\\Python27',
'C:\\Python27\\lib\\site-packages']
Server time: Mon, 20 Jul 2015 22:26:29 +0545*
答案 0 :(得分:1)
您应该为对象命名,以指出它们实际上是什么。出于某种原因,您在上下文中使用名称post
来引用帖子集;当您遍历模板中的该集时,您调用每个 posts
。这并不奇怪,让您感到困惑,因此当您在网址标记中引用帖子的PK时,您错误地引用了post.pk
而不是posts.pk
。
正确命名对象,但不会发生这种情况:
def post_list(request):
posts = Post.objects.all()
return render(request,'blog/post_list.html',{'posts':posts})
def post_detail(request,pk):
post = get_object_or_404(Post, pk=pk)
return render(request,'blog/post_detail.html',{'post':post})
和
{% for post in post%}
<h4><a href="{% url "post_detail" pk=post.pk %}">Title:{{ post.title }}</a></h4>
<p>content:{{ post.text }}</p>
{% endfor %}
答案 1 :(得分:0)
0 pattern(s) tried: []
您似乎尚未配置网址调度程序以在blogs/urls.py
文件中包含网址。请注意,主urls.py
文件是proyect目录中的文件。如果要在app目录中添加另一个,则必须明确地执行此操作。
Here您可以看到有关如何执行此操作的文档。基本上,您必须在mysite/urls.py
:
urlpatterns = [
url(r'^blog/', include('blog.urls')),
]
现在,您可以使用前缀blog/
访问该网址。例如,blog/post/whatever