Noob在这里。我正在使用https://github.com/Seedstars/django-react-redux-base这是一个伟大而直接的Django REST + React.js入门项目。这是Django 1.11。
我的问题是Django REST后端无法正确解析API端点。我添加了一个应用程序profiles
,应该在查询时返回用户配置文件:
/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''?我做错了吗?
答案 0 :(得分:0)
您可以尝试以下方法:
app_name = getprofile
urlpatterns = [
url(r'^getprofile/(?P<display_name>.*)/$',views.PublicProfileView.as_view(),name='getprofile'),
]
如果不起作用,请向我们提供错误消息,例如“模板不存在”,例如。
答案 1 :(得分:0)
我弄明白,这是一个清除过时的pyc文件的问题,最重要的是在API请求中设置正确的标题:
清除* .pyc文件:
find . -name "*.pyc" -exec rm '{}' ';'
更正标头以请求JASON响应:
headers : {
'Content-Type': 'application/json',
'Accept': 'application/json'
}