blog
我的根 url conf 中有一个命名空间下的应用程序:
urlpatterns = patterns('',
url(r'^blog/', include('blog.urls', namespace='blog')),
)
这是我在博客索引下的正则表达式blog.urls
:
urlpatterns = patterns('',
url(r'^(?:(?P<page_num>\d+)/)?$', views.index, name='index'),
)
这是我的博客索引视图:
def index(request, page_num):
if not page_num:
return redirect('blog:index', args=[1])
post_list = Post.objects.all()
p = Paginator(post_list, 10)
try:
posts = p.page(page_num)
except PageNotAnInteger:
posts = p.page(1)
except EmptyPage:
posts = p.page(p.num_pages)
return render(request, 'blog/index.html', { 'post_list': posts })
基本上,我希望/blog/1/
在您导航到 时将 url 重定向到/blog/
,这就是我page_num
选择的原因。而且,当然要去/blog/n/
哪里应该导航到适当的分页页面n
。p.page_range
但是,当我转到/blog/
or时/blog/1/
,什么都没有加载,最终 Django 给了我“没有收到数据”错误。我感觉我的正则表达式写错了,但是我尝试了许多排列并且没有任何运气(大多数给我“找不到页面”错误)。
我也在官方 Django 文档中尝试过这种模式blog.urls
,即在:
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
url(r'^(?<page_num>\d+)/$', views.index, name='index'),
)
这在我的博客索引视图中:
def index(request, page_num=1):
....(the rest the same as above)...
但是当我导航到时,这给了我以下错误/blog/
:
TypeError at /blog/
index() takes exactly 2 arguments (1 given)
当我去时出现“未收到数据”错误/blog/1/
。