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/
またはに移動すると/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/
ます。