python - 基于类的 View 中的可选 url 参数

标签 python django django-urls django-class-based-views

如何使用基于类的 View 为 url 参数创建默认值?在例如 TemplateView 上

例如:

url(r'^(?P<num>\d+)|/$', MyView.as_view())

如果 num 没有在 url 中指定,我想设置一个默认值 '4'

最佳答案

如果您指定包含以下名称的正则表达式:

url(r'^(?P<num>\d+)|/$', MyView.as_view())

那么 num 将始终作为关键字参数传递给您的 View 函数。如果正则表达式匹配但没有 num 匹配,则 num 将作为 None 传递给您的 View 。

给定以下 View 函数:

def get(self, request, *args, **kwargs):
    print 'args %s' % repr(args)
    print 'kwargs %s' % repr(kwargs)

runserver打印的输出如下:

# url: /
args ()
kwargs {'num': None}

# url: /45/
args ()
kwargs {'num': u'45'}

检测 None 值并分配适当的默认值取决于您。

def get(self, request, *args, **kwargs):
    num = kwargs.get('num', None)
    if num is None:
        num = 4

关于python - 基于类的 View 中的可选 url 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14429500/

相关文章:

异常中的Python字符串转换为元组

python - Pygame FPS 比我想要的更快

python - 在 Linux/Ubuntu 机器上从 Python/Django 设置网络设置

python - django.urls.exceptions.NoReverseMatch : Reverse for 'user-detail' with no arguments not found

django - 在 Django 1.2 中登录后重定向时出错

python - 使用 Python 魔法分解 Django URL

python - Python 库对全局命名空间有天然的依赖吗?

python - 字典:恢复/删除设置默认值

python - Django ORM - 没有级联删除多对多关系

python - 不能有任何带有 slugs 的 URL。无反向匹配