gpt4 book ai didi

python - Django 在 url 查询中需要参数

转载 作者:行者123 更新时间:2023-12-01 06:44:41 24 4
gpt4 key购买 nike

是否有机会指定 url 查询中需要哪些参数并自动将它们传递到 View 函数中?

在 urls.py 中我想要这样的东西:

path('get_part_info?<part>', views.get_part_info, name='get_part_info'),

在views.py中有这样的东西:

def get_part_info(request, part):
# do something with part
return JsonResponse({'result': part})

想法是避免丑陋的构造,例如:part= request.GET.get('part')

URL 路径不是解决方案,因为“部分”值可能包含各种额外字符,例如斜杠等。

最佳答案

你可以编写一个装饰器:

from functools import wraps
from django.http import HttpResponseBadRequest, JsonResponse

def query_params(*param_names):
def decorator(func):
@wraps(func)
def inner(request, *args, **kwargs):
try:
params = {name: request.GET[name] for name in param_names}
except KeyError:
return HttpResponseBadRequest("Missing Parameter")
kwargs.update(params)
return func(request, *args, **kwargs)

return inner

return decorator


@query_params("part")
def get_part_info(request, part):
# do something with part
return JsonResponse({"result": part})

如果缺少参数,此装饰器将返回 400,但可以按您想要的方式进行更改,例如重定向到另一个 URL 或使用默认值。

关于python - Django 在 url 查询中需要参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59287690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com