Django 中有没有一种方法可以根据某些预定义变量仅公开一定范围的 URL?

Is there a way in Django to expose only a certain range of URLs based on some predefined variable?

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

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

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

max_available_metadata = current_limit [例如这可能是 300、7777 等],我只想将模式中的 URL 配置到此限制。例如,如果我将它发送到 25,type1_1、type1_2...25 以及 type2_1、type2_2...type2_25 都将正确映射但是尝试通过 type1_10000 转到 metadata/type1_26 将所有 return 404s,同样对于类型 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")