我有一些 Python 的背景知识,并且一直在尝试编写一些 Django 教程,因为虽然我了解了大致的概念,但我仍然是初学者,所以我认为遵循一些示例是一种很好的做法。
我目前正在研究如何构建一个简单的博客应用程序的“Django by example”教程(这里有一个链接: http: //lightbird.net/dbe/blog.html),我已经到达了我的部分'正在处理每个帖子的页面。
他在那里用重定向链接做了一件非常奇怪的事情,所以我认为最好按照 Django 文档对它的民意调查应用程序所做的事情。事情就是这样 - 它根本不起作用。不仅如此,我没有收到错误,所以我无法判断出了什么问题,而真正发生的事情对我来说绝对是零意义。
所以这是我的 urls.py 代码:
urlpatterns = patterns('',
url(r'^blog/', 'blog.views.main'),
url(r'^blog/(?P<post_id>\d+)/$', 'blog.views.post'),
)
这是我的views.py 代码:
def main(request):
"""Main listing."""
posts = Post.objects.all().order_by("-created")
paginator = Paginator(posts, 2)
try: page = int(request.GET.get("page", '1'))
except ValueError: page = 1
try:
posts = paginator.page(page)
except (InvalidPage, EmptyPage):
posts = paginator.page(paginator.num_pages)
return render_to_response("list.html", dict(posts=posts, user=request.user))
def post(request, post_id):
post = Post.objects.get(pk=post_id)
d = dict(post=post, user=request.user)
return render_to_response("post.html", d)
这是(我的一部分)html代码:
{% for post in posts.object_list %}
<div class="title">
<a href="/blog/{{ post.id }}/">{{ post.title }}</a></div>
<ul>
<div class="time">{{ post.created }}</div>
<div class="body">{{ post.body|linebreaks }}</div>
</ul>
{% endfor %}
所以我的主页看起来不错,它的开发 url 现在是 127.0.0.1:8000/blog,当我点击帖子标题(比如帖子编号 3)时,它会转到 127.0.0.1:8000/blog/3,就像它应该的那样。
但它并没有得到新的“post.html”模板,而是停留在该死的主页上。尝试更改 url 并直接找到它也不起作用。
就好像 url 模式查找并找到了第一个选项,说“是的,足够好”并且没有费心去运行其他选项。奇怪的是,如果我更改 urls.py 中的帖子视图 url 并去掉“博客”部分,如下所示:
url(r'^(?P<post_id>\d+)/$', 'blog.views.post')
它太棒了。但我想在我的网址中保留“博客”部分,无论如何我都不知道自己做错了什么,所以即使我只是“随心所欲”,我仍然想尝试了解发生了什么在这。