想象一个具有以下 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/