【发布时间】:2018-12-30 03:27:37
【问题描述】:
我想要什么
我正在运行Django Project tutorial 的最初步骤,但已经有一些我无法解决的问题。
include() 背后的想法是让即插即用 URL 变得容易。由于投票在它们自己的 URLconf (polls/urls.py) 中,它们可以放在“/polls/”下,或“/fun_polls/”下,或“/content/polls/”下,或任何其他路径根目录下,并且该应用仍然可以运行。
我根据需要构建了所有内容,并且我的“架子”服务器工作正常(在此处调试,在 localhost 上运行)。 我在shelf.urls中设置urlpatterns,其中第一个尝试包含'bluebook.urls'。
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('bluebook/', include('bluebook.urls')),
path('admin/', admin.site.urls),
]
当我转到http://127.0.0.1:8000/bluebook/ 时,工作正常并加载了我设置的views.index。
什么不起作用
当我转到 http://127.0.0.1:8000/thebluebook/ 时,它会抛出 404。它会定义正则表达式匹配不起作用:
Using the URLconf defined in shelves.urls, Django tried these URL patterns, in this order:
1. bluebook/
2. admin/
The current path, thebluebook/, didn't match any of these.
http://127.0.0.1:8000/the_bluebook/ 或 http://127.0.0.1:8000/go/bluebook/ 也是如此。
我尝试了什么
我没有写太多代码,所以没有太多可以加入到这个总结中。虽然错误消息只提到了shelf.urls,但我检查了bluebook.urls 是否设置为在从shelf.urls 重定向后接受任何正则表达式:
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
我检查了Django Tutorial Part 1 Error: URL does not match URL patterns 并试图将 ROOT_URLCONF 从 'shelves.urls' 更改为 'urls',但它会抛出 ERR_CONNECTION_REFUSED 而不是 404,无论我在http://127.0.0.1:8000/ 之后放置什么,基本上该站点不再工作了.
我检查了Page not found 404 on Django site?,但我网站的 urls.py 位于 子文件夹 mysite/,而不是父 mysite/。
我也试过
urlpatterns = [
path('bluebook/', 'bluebook.urls'),
path('admin/', admin.site.urls),
]
但它也不起作用。
基本上,我的所有设置对我来说都是正确的,因为调用确切的 URLpattern 可以按预期工作。只有正则表达式匹配似乎不起作用。
FWIW,我正在使用 JetBrain 的 PyCharm 来编辑代码并设置 venv,没有插件,但我认为它不会影响 Django 代码的运行。
Python 版本: Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Django 版本: 2.0.7
PyCharm 版本: 2018.1.4
Chrome 版本: 版本 67.0.3396.99(官方构建)(64 位)
【问题讨论】:
-
您为什么希望它与任何以 bluebook 结尾的模式匹配?
标签: django