我想做这样的事情,在每个用户特定的应用程序的路径中都有一个用户的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是否会传递到每个应用程序中的每个视图?
我一直到处搜索,但是没有发现其他人这样做的例子。
由于您的用户有一个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
字段传递给每个将其作为参数的链接。