【问题标题】:django REST urls.py does not resolve endpointdjango REST urls.py 不解析端点
【发布时间】:2018-07-07 13:38:26
【问题描述】:

这里是菜鸟。我正在使用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'',我会得到数据库中“测试”配置文件的预期 JSON 有效负载。为什么解析器会跳过 r'^api/v1/profiles/ 并直接解析为 r''?我做错了吗?

【问题讨论】:

  • 请将您的答案发布为答案,并将其标记为已接受,以便浏览的人可以看到此问题已解决。

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


【解决方案1】:

您可以尝试以下方法吗:

app_name = getprofile

urlpatterns = [
    url(r'^getprofile/(?P<display_name>.*)/$',views.PublicProfileView.as_view(),name='getprofile'),
]

如果不起作用,请给我们错误信息,例如“模板不存在”。

【讨论】:

  • 这失败了:文件“/home/vpe/src/golrn/masterlrn/src/profiles/urls.py”,第 5 行,在 app_name = getprofile NameError: name 'getprofile'未定义
【解决方案2】:

我明白了,这是清除陈旧的 pyc 文件的问题,最重要的是在 API 请求中设置正确的标头:

清除 *.pyc 文件:

find . -name "*.pyc" -exec rm '{}' ';'

请求 JASON 响应的正确标头:

headers : {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2014-03-17
    • 2011-09-16
    • 2017-03-19
    相关资源
    最近更新 更多