Sto provando a creare la versione per l'applicazione REST. Ecco il mio URL examleDjango REST Framework: come aggiungere il prefisso nell'URL per il controllo delle versioni
www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
Questa è la struttura del progetto
├── __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
file principale per 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()
Il mio problema è, quando ho utilizzando semplici url senza alcun prefisso, allora si sta lavorando
www.myapi.com/foo
e quando ho usato il prefisso di versione v1 o v2, quindi genera errore [Pagina no t ha trovato (404)]
www.myapi.com/v1/foo
Ho avuto questa idea da questo link https://stackoverflow.com/a/21839842/1558544
Se io non uso classe middleware poi è questo è possibile ottenere lo stesso risultato?
Grazie
cosa succede se si posiziona il più esplicito pattern "^ v1" di "^" –
Quindi entrambi non funzioneranno. Errore di ricerca non trovata (404) –