Django中有没有一种方法可以基于预定义的变量只公开特定范围的URL



我基本上是在尝试在应用程序中公开一系列已定义的URL。

例如,我有10k个x2资源,我托管在/metadata/type1_1和/metadata/type2_1,其中每个资源分组分别迭代到type1_10000和type2_10000(我打算在手动驱动的时间间隔内提供20000个存储的资产(。

因此,我试图定义一个URL方案,这样

max_available_metadata=current_limit[例如,这可能是300、7777等],我只想在模式中配置URL,直到这个限制。例如,如果我将其发送到25,则type1_1、type1_2…25以及同样的type2_1、type2_2…type2_25都将正确映射,但是尝试通过type1_10000转到元数据/type1_26都将返回404,对于类型2也是如此。

我可能想通过django管理员配置设置,但这不是问题的一部分。

您可以在视图中控制它。

# urls.py
urlpatterns = [
path(
"metadata/type<int:asset_type>_<int:asset_num>/",
views.serve_asset,
),
# views.py
def serve_asset(request, asset_type, asset_num):
if asset_type == 1:
if asset_num <= MAX_ALLOWED_ASSET_NUM:
# do your stuff for asset 1
elif asset_type == 2:
...
raise Http404("Asset not exist")

最新更新