【发布时间】:2015-01-01 16:18:16
【问题描述】:
我正在尝试为 REST 应用程序创建版本。这是我的网址示例
www.myapi.com/foo [default version]
www.myapi.com/v1/foo [version one]
这是项目结构
├── __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
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()
我的问题是,当我使用没有任何前缀的简单 url 时,它正在工作
www.myapi.com/foo
当我使用版本前缀 v1 或 v2 时,它会抛出错误 [Page not found (404)]
www.myapi.com/v1/foo
我从这个链接得到了这个想法 https://stackoverflow.com/a/21839842/1558544
如果我不使用中间件类,那么这可能得到相同的结果吗?
谢谢
【问题讨论】:
-
如果将更明确的 '^v1' 模式放在 '^' 前面会发生什么
-
那么两者都不起作用。找不到页面(404)错误
标签: django django-rest-framework django-urls