Tôi đang cố gắng tạo phiên bản cho ứng dụng REST. Đây là URL của tôi examleKhung làm việc REST Django: Cách thêm tiền tố vào URL để phiên bản
www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
Đây là cấu trúc dự án
├── __init__.py ├── settings.py ├── urls.py ├── default_app │ ├── __init__.py │ ├── serializer.py │ ├── models.py │ ├── views.py │ ├── urls.py │ └── v1_app ├── __init__.py ├── serializer.py ├── models.py ├── views.py ├── urls.py
default_app urls.py
from django.conf.urls import *
from default_app import views as df_views
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'foo', df_views.viewname, "foo")
urlpatterns = router.urls
v1_app urls.py
from django.conf.urls import *
from v1_app import views as ver_views
from rest_framework import routers
router = routers.DefaultRouter()
router.register(r'foo', ver_views.viewname, "foo")
urlpatterns = router.urls
tập tin chính cho urls.py
from django.conf.urls import patterns, include, url
from defualt_app import urls as default_urls
from v1_app import urls as v1_urls
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += patterns('',
url(r'^', include(default_urls, namespace="default")),
url(r'^v1/', include(v1_urls, namespace="v1"))
)
urlpatterns += staticfiles_urlpatterns()
Vấn đề của tôi là, khi tôi sử dụng url đơn giản mà không cần bất kỳ tiền tố sau đó nó đang làm việc
www.myapi.com/foo
và khi tôi sử dụng tiền tố phiên bản v1 hoặc v2 thì nó sẽ phát ra lỗi [Trang không t tìm thấy (404)]
www.myapi.com/v1/foo
Tôi có ý tưởng này từ liên kết này https://stackoverflow.com/a/21839842/1558544
Nếu tôi không sử dụng lớp trung gian sau đó là điều này có thể để có được kết quả tương tự?
Cảm ơn bạn
điều gì sẽ xảy ra nếu bạn đặt mẫu văn bản '^ v1' rõ ràng hơn trước '^' –
Sau đó cả hai sẽ không hoạt động. Lỗi không tìm thấy trang (404) –