在主 url 之后添加了 Django urls 空间

Posted

技术标签:

【中文标题】在主 url 之后添加了 Django urls 空间【英文标题】:Django urls space gets added after main url 【发布时间】:2017-10-18 02:49:39 【问题描述】:

我收到此错误消息

Using the URLconf defined in esarcrm.urls, Django tried these URL patterns, in this order:
1. ^person/ duplicate_check/(?P<entity>)/(?P<full_name>)/?$
2. ^admin/
3. ^api/v1/
4. ^api/v1/authenticate/$ [name='api_authenticate']
5. ^static\/(?P<path>.*)$
6. ^media\/(?P<path>.*)$
The current path, person/duplicate_check/candidate/tom, didn't match any of these.

这里的空格请不要1. ^person/[SPACE]duplicate_check

我的项目/urls.py

urlpatterns = [
    url(r'^person/', include('person.urls')),
    url(r'^admin/', admin.site.urls),
    url(r'^api/v1/', include(router.urls)),
    url(r'^api/v1/authenticate/$', crm_views.ApiAuthenticateView.as_view(), name='api_authenticate'),
]

我的 app.urls

urlpatterns = [
    url(r'duplicate_check/(?P<entity>)/(?P<full_name>)/?$', views.check_if_exist),
]

我的 app.views

@api_view(['GET'])
def check_if_exist(request, entity, first_name):
    if entity == 'candidate':
        candidates = person_models.Candidate.objects.filter(first_name=first_name)
        serializer = person_serializers.CandidateMiniSerializer(candidates, many=True)
        return Response(serializer.data)

我到底错过了什么?

【问题讨论】:

在 `urlpatterns` 在您的应用程序 url 中,您忘记输入 ^r^'duplicate_check... 【参考方案1】:

没有空格,这就是 Django 打印 URL 的方式。

问题与空格无关,而与您的网址有关。 “duplicate_check”包含在 person/ 下,但您正在尝试访问 p_check/....

编辑您的网址格式实际上存在更大的问题。您实际上并没有给捕获组任何要捕获的东西。您需要括号内的某种模式。比如:

r'^duplicate_check/(?P<entity>\w+)/(?P<full_name>\w+)/?$'

这将捕获实体和全名的所有字母数字字符。

【讨论】:

抱歉,打错了。我实际上在邮递员中是正确的。还是不行

以上是关于在主 url 之后添加了 Django urls 空间的主要内容,如果未能解决你的问题,请参考以下文章

django在url中配置静态资源

Django:使用任意 URL 组件进行反向 URL 查找

django网页问题 url自动添加了斜杠

python+django 更改了urls.py 之后runserver报错的解决办法

Django 在 url 中添加了一个额外的“/”?

django 登录注册