Pertanyaan Django Rest Framework tidak akan menampilkan lebih dari satu URL pada waktunya?


Saya punya proyek dengan banyak aplikasi. Setiap aplikasi memiliki urls.py. Saya menunjuk ke masing-masing dari urls.py proyek. Semua Url dapat diakses, tetapi tidak semua ditampilkan dalam DRF.

Berikut ini kodenya:

from django.conf.urls import url, include
from rest_framework import routers

from employees.urls import employees_router
from access.urls import access_router


router = routers.DefaultRouter()

#API ENDPOINTS

urlpatterns = [
    url(r'^api/', include(employees_router.urls)),
    url(r'^api/', include(access_router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

Masalahnya adalah HANYA URL pertama yang terdaftar akan ditampilkan - dalam hal ini karyawan. Jika saya berkomentar satu itu, maka tampilan url access_router (pengguna dan grup) sebagai tautan terpisah. Mengapa SEMUA URL untuk rest_framework tidak ditampilkan pada saat yang sama - dalam format daftar?


4
2017-10-14 13:51


asal


Jawaban:


Django memulai di bagian atas pola url, dan berhenti begitu menemukan kecocokan. Karena Anda memiliki dua url menggunakan regex yang sama '^api/', termasuk yang kedua tidak akan pernah digunakan.

Atau, Anda tidak perlu router untuk setiap aplikasi. Anda dapat mendaftarkan banyak tampilan dengan router yang sama:

from access.urls import AccessViewSet
from employees.urls import EmployeesViewSet

router = routers.DefaultRouter()
router.register(r'access', AccessViewSet)
router.register(r'employees', EmployeesViewSet)

Kemudian sertakan router default dalam pola url Anda:

urlpatterns = [
    url(r'^api/', include(router.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]

4
2017-10-14 14:04