django - 如何在 django 2.0 中的 url 中有选项

标签 django django-urls django-2.0

在 Django 1 中,我曾经有这样的 url 选择:

url('meeting/(?P<action>edit|delete)/', views.meeting_view, name='meeting'), 

如何在 Django 2.0 中使用 <> 语法执行此操作:

也许是这样的?

path('meeting/(<action:edit|delete>)/', views.meeting_view, name='meeting'),

最佳答案

如果我理解 documentation ,您的第一个语法应该开箱即用。

无论如何,您可以使用新语法执行以下操作:

第一个文件=创建一个Python包转换器并添加edit_or_delete.py:

import re

class EditOrDeleteConverter:
    regex = '(edit|delete)'

    def to_python(self, value):
        result = re.match(regex, value)
        return result.group() if result is not None else ''

    def to_url(self, value):
        result = re.match(regex, value)
        return result.group() if result is not None else ''

对于您的 urls.py 文件,如下:

from django.urls import register_converter, path

from . import converters, views

register_converter(converters.EditOrDeleteConverter, 'edit_or_delete')

urlpatterns = [
    path('meeting/<edit_or_delete:action>/', views.meeting_view, name='meeting'),
]

关于django - 如何在 django 2.0 中的 url 中有选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48031043/

相关文章:

python - 即使在 forms.py 中 UserRegistrationForm 的 Meta 类中使用 "exclude"变量后,password1、password2 的字段也会显示(在注册页面)

python - 表单保存不会将用户添加到模型

Django 在开发模式下不断重启

python - 具有空值的 Django 网址

python-3.x - 如何通过在 Django 2.0 中创建语言文件来集成多语言支持?

python - Django 2、python 3.4 无法解码 urlsafe_base64_decode(uidb64)

python - 在 Django 中保存文件之前更改文件名

python - 如何在 django 中对包含的 URL 使用reverse()?

python - 如何在 Django 命名空间可重用应用程序中进行反向 URL 搜索

python - 如何在 Django Rest Framework 中从两个模型编辑用户配置文件并保存更改