python - 处理 url 参数类型的好方法是什么?

标签 python django django-urls

想象一个具有以下 url.py 的应用程序:

urlpatterns = patterns('',
    url(r'^$', views.index),
    url(r'^double/(?P<number>\d+)/$', views.double),
)

还有这个views.py:

def double(request, number=42):
    return HttpResponse(2*number)

显然,我希望 number 始终被视为 int。查询 /double/5/ 时,我总是期望得到 10,而不是 55

有什么好的方法可以处理 Django url 中的参数输入吗?

最佳答案

这是一个基于装饰器的解决方案:

def param_type(**type_spec):
    def deco(f):
        def view(request, **kwargs):
            for k, type_ in type_spec.items():
                kwargs[k] = type_(kwargs[k])
            return f(request, **kwargs)
        return view
    return deco

@param_type(number=int)
def double(request, number=42):
    return HttpResponse(2*number)

关于python - 处理 url 参数类型的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24807196/

相关文章:

python - asyncio.run_coroutine_threadsafe 的 future 永远挂起?

python - 将字典中的多个数组写入列

python - Urls.py 无法将 #(pound) 字符传递给 Django 中的 View ,

python - 获得 Pandas 数据框组的中位数

Python 类与另一个类在同一个文件中定义 - 如何访问文件中稍后定义的类?

python - Django/Python - 每秒更新一次数据库

具有非必填字段的 Django MultiValueField

python - Django - URL 未在根主页中呈现 View

python - 在此服务器上找不到请求的 URL django

python - 在 Django Url Dispatcher 中获取 http 请求数据?这可能吗?如果是这样,如何?