Django-在站点级urls.py中使用URL调度程序

问题描述 投票:0回答:1

我想做这样的事情,在每个用户特定的应用程序的路径中都有一个用户的uuid:

urlpatterns = [
    # URLs for all users
    path('', HomePageView.as_view(), name='home'),
    ...

    # URLs specific to a particular user
    path('<uuid:user_id>/', UserHomePageView.as_view(), name='user_home'),
    path('<uuid:user_id>/assets/', include('mysite.assets.urls', namespace='user_assets')),
    path('<uuid:user_id>/components/', include('mysite.components.urls', namespace='user_components')),
    path('<uuid:user_id>/service_requests/', include('mysite.service_requests.urls', namespace='user_service_requests')),
    ...
]

我不确定这将如何工作。 uuid是否会传递到每个应用程序中的每个视图?

我一直到处搜索,但是没有发现其他人这样做的例子。

django url view uuid
1个回答
0
投票

由于您的用户有一个uuid,请假设您使用以下内容重写了User模型:

# models.py
import uuid

class CustomUser(AbstractUser):
    .....
    unique_uuid = models.UUIDField(default=uuid.uuid4, unique=True)

并且从您的项目根目录中,您将拥有:

urlpatterns = [
    path('some_app/', include('some_app.urls', namespace='some_app')),
    .....
]

然后在每个应用程序中,每个URL和视图都将具有:

app_name = 'some_app'

urlpatterns = [
    path('<uuid:random_uuid>/', views.whatever, name='whatever'),
    .....
]

每个这样的视图都有:

def whatever(request, random_uuid):
    ....
    return render(...)

并且您的模板会将user.unique_uuid字段传递给每个将其作为参数的链接。

© www.soinside.com 2019 - 2024. All rights reserved.