Próbuję utworzyć wersję aplikacji REST. Oto mój adres URL examleDjango REST Framework: Jak dodać prefiks w adresie URL do wersjonowania
www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
To jest struktura projektu
├── __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
główny plik dla 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()
Mój problem jest, kiedy za pomocą prostego URL bez prefiksu to działa
www.myapi.com/foo
i kiedy użyłem przedrostka wersji v1 lub v2, to zgłasza błąd [Strona nr t znaleziono (404)]
www.myapi.com/v1/foo
Mam ten pomysł z tego linku https://stackoverflow.com/a/21839842/1558544
Jeśli nie używam klasy middleware następnie jest to możliwe, aby uzyskać ten sam wynik?
Dziękuję
co się stanie, jeśli umieścisz bardziej wyraźny wzorzec "^ v1" przed '^' –
Następnie oba nie będą działać.Pamięć nie znaleziono (404) błąd –