django REST urls.py 不解析端点
django REST urls.py does not resolve endpoint
这里是菜鸟。我正在使用 https://github.com/Seedstars/django-react-redux-base,这是一个很棒且直接的 Django REST + React.js 入门项目。这是 Django 1.11。
我的问题是 Django REST 后端没有正确解析 API 端点。我添加了一个应用程序 profiles
,它应该 return 一个用户配置文件,当被查询时:
/api/v1/profiles/getprofile/(some_name)
这是我的顶层 urls.py
:
from django.conf import settings
from django.conf.urls import include, url
from django.views.decorators.cache import cache_page
from base import views as base_views
urlpatterns = [
url(r'^api/v1/accounts/', include('accounts.urls', namespace='accounts')),
url(r'^api/v1/getdata/', include('base.urls', namespace='base')),
url(r'^api/v1/profiles/', include('profiles.urls', namespace='profiles')),
url(r'', cache_page(settings.PAGE_CACHE_SECONDS)(base_views.IndexView.as_view()), name='index'),
]
我的profiles/urls.py
:
from django.conf.urls import url
from django.utils.translation import ugettext_lazy as _
from . import views
urlpatterns = [
url(_(r'^getprofile/(?P<display_name>.*)/$'),
views.PublicProfileView.as_view(),
name='getprofile'),
]
使用此设置,当我查询 http://localhost:8000/api/v1/profiles/getprofile/test 时,我在响应中得到 IndexView,基本上 html 包含前端。但是,如果我从顶层 urls.py 注释掉 r'',我会得到 'test' 配置文件的预期 JSON 有效载荷数据库。为什么解析器会跳过 r'^api/v1/profiles/ 并直接解析为 r''?我做错了吗?
你能试试下面这些吗:
app_name = getprofile
urlpatterns = [
url(r'^getprofile/(?P<display_name>.*)/$',views.PublicProfileView.as_view(),name='getprofile'),
]
如果不成功,请给我们错误信息,例如"template does not exist"。
我明白了,这是清除陈旧的 pyc 文件的问题,最重要的是在 API 请求中设置正确的 headers:
要清除 *.pyc 文件:
find . -name "*.pyc" -exec rm '{}' ';'
更正 headers 以请求 JASON 响应:
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
这里是菜鸟。我正在使用 https://github.com/Seedstars/django-react-redux-base,这是一个很棒且直接的 Django REST + React.js 入门项目。这是 Django 1.11。
我的问题是 Django REST 后端没有正确解析 API 端点。我添加了一个应用程序 profiles
,它应该 return 一个用户配置文件,当被查询时:
/api/v1/profiles/getprofile/(some_name)
这是我的顶层 urls.py
:
from django.conf import settings
from django.conf.urls import include, url
from django.views.decorators.cache import cache_page
from base import views as base_views
urlpatterns = [
url(r'^api/v1/accounts/', include('accounts.urls', namespace='accounts')),
url(r'^api/v1/getdata/', include('base.urls', namespace='base')),
url(r'^api/v1/profiles/', include('profiles.urls', namespace='profiles')),
url(r'', cache_page(settings.PAGE_CACHE_SECONDS)(base_views.IndexView.as_view()), name='index'),
]
我的profiles/urls.py
:
from django.conf.urls import url
from django.utils.translation import ugettext_lazy as _
from . import views
urlpatterns = [
url(_(r'^getprofile/(?P<display_name>.*)/$'),
views.PublicProfileView.as_view(),
name='getprofile'),
]
使用此设置,当我查询 http://localhost:8000/api/v1/profiles/getprofile/test 时,我在响应中得到 IndexView,基本上 html 包含前端。但是,如果我从顶层 urls.py 注释掉 r'',我会得到 'test' 配置文件的预期 JSON 有效载荷数据库。为什么解析器会跳过 r'^api/v1/profiles/ 并直接解析为 r''?我做错了吗?
你能试试下面这些吗:
app_name = getprofile
urlpatterns = [
url(r'^getprofile/(?P<display_name>.*)/$',views.PublicProfileView.as_view(),name='getprofile'),
]
如果不成功,请给我们错误信息,例如"template does not exist"。
我明白了,这是清除陈旧的 pyc 文件的问题,最重要的是在 API 请求中设置正确的 headers:
要清除 *.pyc 文件:
find . -name "*.pyc" -exec rm '{}' ';'
更正 headers 以请求 JASON 响应:
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}