我的网址有问题,首先是我的urls.py:
from .views import (
CouponListView, CouponDetailView, buy_coupon, UserCouponListView, CouponOnResaleCreateView,
CouponOnResaleListView,
)
from django.urls import path
coupons_patterns = ([
path('', CouponListView.as_view(), name = 'list'),
path('<int:pk>/<slug:slug>/', CouponDetailView.as_view(), name = 'detail'),
path('create/<int:pk>/<slug:slug>/', CouponOnResaleCreateView.as_view(), name = 'create'),
path('<slug:slug>/', UserCouponListView.as_view(), name = 'user'),
path('coupon/<int:pk>/<slug:slug>/buy/', buy_coupon, name = 'buy_coupon'),
], 'coupons')
好吧,我想添加另一个网址“模式”,也就是说,我拥有的网址“模式”是:coupons:name
,我想添加一个这样的网址:{{1 }},但不必创建其他应用。
我应该怎么做?我想到要创建其他模式,就像我之前展示的那样并包含它,但这是一种好习惯吗?还有其他方法吗?
我想要URL中的可伸缩,干净且易于维护的结构。
更新::
我是通过这种方式发生的,但是并不能说服我很多:
coupons_on_resale:name
谢谢您的建议!
答案 0 :(得分:0)
我找到了一种以自己喜欢的方式来构造我的url的方法,并且对我来说,如何构造这些url似乎很干净,这里是代码:
from .views import (
CouponListView, CouponDetailView, buy_coupon, UserCouponListView, UserCouponDetailView,
CouponOfResaleCreateView, CouponOfResaleListView, CouponOfResaleDetailView
)
from django.urls import path, include
coupon_patterns = ([
path('', CouponListView.as_view(), name = 'list'),
path('<int:pk>/<slug:slug>/', CouponDetailView.as_view(), name = 'detail'),
path('<int:pk>/buy/<slug:slug>/', buy_coupon, name = 'buy-coupon'),
], 'coupon')
user_patterns = ([
path('', UserCouponListView.as_view(), name = 'list'),
path('<slug:slug>/', UserCouponDetailView.as_view(), name = 'detail'),
], 'user_coupon')
resale_patterns = ([
path('', CouponOfResaleListView.as_view(), name = 'list'),
path('<int:pk>/<slug:slug>/', CouponOfResaleDetailView.as_view(), name = 'detail'),
path('create/<int:pk>/<slug:slug>/', CouponOfResaleCreateView.as_view(), name = 'create'),
], 'resale')
urlpatterns = [
path('', include(coupon_patterns)),
path('resale/', include(resale_patterns)),
path('<slug:slug>/', include(user_patterns)),
]
那么,您如何看待这种结构?这是不好的做法吗?让我知道您的意见,任何建议都可以帮助我学习。