【问题标题】:organize urls in django在 django 中组织 url
【发布时间】:2019-11-20 10:40:09
【问题描述】:

我的网址有问题,首先这里是我的 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')

好吧,可以这么说,我想添加另一种 url 的“模式”,也就是说,我拥有的 url 的“模式”是:coupons:name,我想添加一个这样的:coupons_on_resale:name,但是无需创建另一个应用程序。

我该怎么做?我想到创建其他模式,就像我之前展示的模式并包含它,但这是一种好的做法吗?还有其他方法吗?

我希望我的网址中有一个可扩展、干净且易于维护的结构。


更新::

我是这么想的,但并没有让我很信服:

from .views import (
    CouponListView, CouponDetailView, buy_coupon, UserCouponListView, CouponOnResaleCreateView,
    CouponOnResaleListView,
) 

from django.urls import path, include

coupons_patterns = ([
    path('', CouponListView.as_view(), name = 'list'),
    path('<int:pk>/<slug:slug>/', CouponDetailView.as_view(), name = 'detail'),
    path('<slug:slug>/', UserCouponListView.as_view(), name = 'user'),
    path('coupon/<int:pk>/<slug:slug>/buy/', buy_coupon, name = 'buy-coupon'),

    path('resale/', include(([
        path('create/<int:pk>/<slug:slug>/', CouponOnResaleCreateView.as_view(), name = 'create'),

    ], 'resale')))

], 'coupons')

提前感谢您的建议!

【问题讨论】:

    标签: python django django-rest-framework django-urls


    【解决方案1】:

    我找到了一种以我喜欢的方式构建我的网址的方法,我觉得这些网址的结构很清晰,这里是代码:

    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)),
    ]
    

    那么,你觉得这个结构怎么样?这是不好的做法吗?让我知道您的意见,任何建议都有助于我的学习。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-22
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 2013-07-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多