организовать URL-адреса в Джанго - PullRequest
1 голос
/ 10 июля 2019

У меня проблема с моими URL, в первую очередь здесь мои 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, но без необходимости создавать другое приложение.

Как мне это сделать? Мне приходит в голову создать другие шаблоны, подобные тем, которые я показывал ранее, и включить их, но это хорошая практика? Есть ли другие способы?

Мне нужна масштабируемая, чистая и простая в обслуживании структура в моих URL.


Обновление ::

Это пришло мне в голову, но меня это мало убеждает:

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')

Спасибо за ваши предложения заранее!

1 Ответ

0 голосов
/ 12 июля 2019

Я нашел способ структурировать свои 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)),
]

Итак, что вы думаете об этомсостав?Это плохая практика?Дайте мне знать ваше мнение, любой совет поможет моему обучению.

...