python - 是否可以从字符串制作 Django urlpatterns?

标签 python django django-views django-urls

我有一个字符串列表,用于在 Django 布局模板中定义导航 Pane 。我想对 View 函数名称使用相同的列表,并使用循环相应地在 urls.py 中定义 urlpatterns。

示例:

menu = ["register", "login", "logout"]
urlpatterns = [path("", views.index, name="index"),]

从上面,我想到达

urlpatterns = [
    path("", views.index, name="index"),
    path("/register", views.register, name="register"),
    path("/login", views.login, name="login"),
    path("/logout", views.logout, name="logout"),
]

我能够将路由作为 str 和 kwargs 作为字典传递,但很难将字符串转换为可调用 View 函数的名称。这可能吗?

for i in menu:
    url = f'"/{i}"' #works when passed as parameter to path()
    rev = {"name": i} #works when passed as parameter to path()

    v = f"views.{i}" #this does not work
    v = include(f"views.{i}", namespace="myapp") #this does not work either
    
    urlpatterns.append(path(url, v, rev))

最佳答案

是的,您可以使用:

menu = ['register', 'login', 'logout']
urlpatterns = [
    path('', views.index, name='index'),
    *[path(f'{name}/', <b>getattr(views, name), name=name</b>) for name in menu],
]

关于python - 是否可以从字符串制作 Django urlpatterns?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77392276/

相关文章:

python - PySPark - 确定操作后数据类型的函数

python - pickle值错误: itemsize cannot be zero

python - 在Python中,为什么这一行从文件中运行(无异常),但在shell中运行时抛出异常?

python - 基数为 10 的 int() 无效文字 : '' when saving modified modelformset

python - 如何使 Django 下拉表单显示用户而非所有用户拥有的项目?

python - 这是使用 API 在 Python 中为 Braintree 创建订阅的正确方法吗

javascript - Python - 在两个浏览器之间传输 session

python - 在 Django 中获取模型的属性类型

python - 无法安装 mysql- for Python/Django (Windows)

python - 方法对象不是 JSON 可序列化的