gpt4 book ai didi

python - 如何将 django 1.4 的正则表达式转换为 django 2.0 样式路径?

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

url('add/(?P<journal_type>C[DR])/$', add_bank_entry),

如何将此行转换为 django 2.0 版本 path()图案? C[DR] 是什么?做?

最佳答案

C 只是一个必须匹配的文字字符。 [DR] 部分是一个字符的正则表达式语法,可以是 D 或和 R。因此以下两个路径对于给定的 URL 模式有效:

add/CD/
add/CR/

add_bank_entry View 时,journal_entry 将设置为 'CD''CR'被调用。

您可以注册两条路线和 pass in default values对于每个 journal_type,使用 re_path() 中的正则表达式,或者注册一个知道如何处理两个字符串匹配的自定义路径转换器。

使用两个 url 非常简单:

path('add/CD/', add_bank_entry, {'journal_type': 'CD'}, name='add_bank_entry'),
path('add/CR/', add_bank_entry, {'journal_type': 'CR'}, name='add_bank_entry'),

这做了完全相同的事情;匹配两个可能的 URL 路径之一,并将正确的字符串值传递给 View 函数。

您可以只采用原始正则表达式,而根本不进行转换,只需将 url() 替换为 re_path() :

re_path(r'add/(?P<journal_type>C[DR])/$', add_bank_entry),

在 Django 2.0 中,url()re_path() 的别名,因此您暂时无需更改任何内容。在未来的 Django 版本中,该别名将被删除。

如果该模式在您的 URL 中很常见(甚至在不同的 Django 应用程序中),您可以创建自定义路径转换器:

from django.urls import register_converter, StringConverter

class JournalEntryTypePathConverter(StringConverter)
regex = 'C[DR]'

register_converter(JournalEntryTypePathConverter, 'journaltype')

然后在路径中使用它:

path('add/<journaltype:journal_type>/', add_bank_entry),

关于python - 如何将 django 1.4 的正则表达式转换为 django 2.0 样式路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51693988/

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