gpt4 book ai didi

python - 使用额外选项反转 Django URL

转载 作者:太空狗 更新时间:2023-10-29 17:24:03 25 4
gpt4 key购买 nike

假设我有一个如下所示的 URLconf,并且 'foo''bar'page_slug 的有效值。

urlpatterns = patterns('',
(r'^page/(?P<page_slug>.*)/', 'myapp.views.someview'),
)

然后,我可以使用下面的方法重建 URL,对吗?

>>> from django.core.urlresolvers import reverse
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'foo'})
'/page/foo/'
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'bar'})
'/page/bar/'

但是如果我将我的 URLconf 更改为此呢?

urlpatterns = patterns('',
(r'^foo-direct/', 'myapp.views.someview', {'page_slug': 'foo'}),
(r'^my-bar-page/', 'myapp.views.someview', {'page_slug': 'bar'}),
)

我期望这样的结果:

>>> from django.core.urlresolvers import reverse
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'foo'})
'/foo-direct/'
>>> reverse('myapp.views.someview', kwargs={'page_slug': 'bar'})
'/my-bar-page/'

但是,这会引发 NoReverseMatch 异常。我怀疑我正在尝试做一些不可能的事情。关于以更明智的方式完成我想要的事情的任何建议?

命名 URL 不是一个选项,因为我不希望链接到这些的其他应用程序需要了解 URL 结构的细节(封装等)。

最佳答案

您应该尝试命名您的 urlconf。示例:

urlpatterns = patterns('',
url(r'^foo-direct/', 'myapp.views.someview', {'page_slug': 'foo'}, name='foo-direct'),
url(r'^my-bar-page/', 'myapp.views.someview', {'page_slug': 'bar'}, name='bar-page'),
)

然后只要编辑你的反面,你就应该让它工作。

>>> from django.core.urlresolvers import reverse
>>> reverse('foo-direct', kwargs={'page_slug': 'foo'})
'/foo-direct/'
>>> reverse('bar-page', kwargs={'page_slug': 'bar'})
'/my-bar-page/'

更多信息请访问:Django Docs

关于python - 使用额外选项反转 Django URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659832/

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