django REST urls.py不解析端点

时间:2018-01-28 21:18:24

标签: python django django-rest-framework django-urls

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''?我做错了吗?

2 个答案:

答案 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'
}