我想要的
我正在执行Django Project tutorial的第一步,已经有些事情我做不到。
include()的思想是使URL的即插即用变得容易。由于民意调查位于其自己的URLconf(polls / urls.py)中,因此可以将其置于“ / polls /”下,“ / fun_polls /”下,“ / content / polls /”下或任何其他路径根下,并且该应用程序仍然可以运行。
我根据需要构建了所有内容,并且我的“服务器”服务器正常运行(在此处调试,在本地主机上运行)。 我将在架子.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设置为在从shelfs.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),
]
但它也不起作用。
基本上,我的所有设置对我来说都是正确的,因为调用确切的URL模式可以按预期工作。只有正则表达式匹配似乎不起作用。
FWIW,我正在使用JetBrain的PyCharm编辑代码并设置venv,但没有插件,但我认为它不会影响Django代码的运行。
Python版本:在Win32上的Python 3.6.5(v3.6.5:f59c0932b4,2018年3月28日,17:00:18)[MSC v.1900 64位(AMD64)] >
Django版本: 2.0.7
PyCharm版本: 2018.1.4
Chrome版本::67.0.3396.99版(官方内部版本)(64位)
答案 0 :(得分:0)
您没有在网址中包含“ thebluebook”。您有path('bluebook/', include('bluebook.urls')),
和path('', views.index, name='index'),
这意味着您可以4.3但不能http://127.0.0.1:8000/bluebook/any/thing/here/。