gpt4 book ai didi

python - Django url反向和正则表达式

转载 作者:行者123 更新时间:2023-11-30 23:50:22 25 4
gpt4 key购买 nike

我在我的 urlpatterns 中得到了这个 url(r'^(page/(?P<page>\d+)/)?$', 'index', name = 'index_path')

这是我的views.py 文件

def index(request, page=1):
posts = Post.objects.filter(published = True)
paginated_posts = Paginator(posts, 20)

try:
target_page = paginated_posts.page(page)
except EmptyPage:
return redirect(reverse('index_path'))

response_dict = {
'posts': target_page.object_list,
'page': target_page,
}

return render(request, 'posts/index.html', response_dict)`

我用它来进行简单的分页,如果用户输入任何内容,例如“/blog/”,则返回他/她的首页,否则返回他/她想要的页面。

它正在工作。但是当我想使用reverse()函数时出现问题。

当我在交互式 shell 中输入时:

reverse("index_path")  

我得到了:

 '/blog/'

但我这样做:

reverse("index_path", args=(1, ))

我收到错误消息:

NoReverseMatch: Reverse for 'index_path' with arguments '(1, )' and keyword arguments '{}' not found.

PS:在我的主 urls.py

url(r'^blog/', include('app.posts.urls')),

最佳答案

我认为为了使其正常工作,您必须有两个网址:

url(r'^page/(?P<page>\d+)$', 'index', name = 'index_path_page'),
url(r'^$', 'index', name = 'index_path'),

那么当你反转时,你有两个选择:

reverse('index_path_page', args=[1])
# or
reverse('index', args=[1]) # pulls by the name of the view.

不推荐使用第二种方法,但肯定会导致某些地方的逻辑更简单。

关于python - Django url反向和正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com