Ich versuche, Version für REST-Anwendung zu erstellen. Hier ist meine URL examleDjango REST Framework: So fügen Sie Präfix in URL für Versionierung hinzu
www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
Dies ist die Projektstruktur
├── __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
Hauptdatei für 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()
Mein Problem ist, wenn ich ohne Präfix einfache URL dann funktioniert es
www.myapi.com/foo
und wenn ich Version Prefix v1 oder v2 verwendet dann wirft es Fehler [Seite Nr t gefunden (404)]
www.myapi.com/v1/foo
ich von diesem Link, um diese Idee https://stackoverflow.com/a/21839842/1558544
Wenn ich Middleware-Klasse nicht dann verwenden ist Dies ist möglich, um das gleiche Ergebnis zu erhalten?
Danke
was passiert, wenn Sie das explizite '^ v1' Muster vor '^' –
platzieren Dann werden beide nicht arbeiten.Page nicht gefunden (404) -Fehler –