Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django URL.py错误-某些模式不起作用_Python_Django_Web - Fatal编程技术网

Python Django URL.py错误-某些模式不起作用

Python Django URL.py错误-某些模式不起作用,python,django,web,Python,Django,Web,在Django中开发个人博客时,我在代码中遇到了一个严重的错误。基本上,我已经通过添加一些规则来更改我的url.py文件,以使某些视图可以访问 url.py from django.conf.urls import include, url from django.contrib import admin from blog import views urlpatterns = [ # Examples: # url(r'^$', 'blogas.views.home',

在Django中开发个人博客时,我在代码中遇到了一个严重的错误。基本上,我已经通过添加一些规则来更改我的url.py文件,以使某些视图可以访问

url.py

from django.conf.urls import include, url
from django.contrib import admin

from blog import views


urlpatterns = [
    # Examples:
    # url(r'^$', 'blogas.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', views.index, name='index'),
    url(r'^(?P<slug>\w+)', views.view_post, name='view_blog_post'),
    url(r'^about/$', views.about, name='about'),
    url(r'^posts/$', views.posts, name='posts'),

]
从django.conf.url导入包括,url
从django.contrib导入管理
从博客导入视图
URL模式=[
#示例:
#url(r'^$'、'blogas.views.home',name='home'),
#url(r“^blog/”,包括('blog.url'),
url(r“^admin/”,包括(admin.site.url)),
url(r'^$',views.index,name='index'),
url(r'^(?P\w+),views.view\u post,name='view\u blog\u post'),
url(r“^about/$”,views.about,name='about'),
url(r“^posts/$”,views.posts,name='posts'),
]
除了我尝试访问
http://127.0.0.1:8000/
关于or/posts,Django抛出404错误。这是什么原因?我已经定义了这两条规则,但系统似乎无法识别模式——也许是我错卖了什么?也许我对url格式一无所知(可能是,这是我第一次做这种事情)


一位新手程序员向所有发现漏洞的人表示衷心的感谢:)

url模式是自上而下处理的。你的第三个模式
^(?P\w+
消耗了一切,因此永远无法访问
关于
帖子

例如:Django希望找到url
about/
的视图。模式
^admin/
^$
不匹配。但是
^(?P\w+
确实如此,因为
关于
以字母或数字开头(包含在
\w
中的字符集)

>>重新导入
>>>重新搜索(“^(?P\w+”,“关于/”)

因此Django找到了匹配项,调用b
views.view\u post
并完成请求。这意味着,更具体的规则必须放在第一位。更好:避免歧义。

url模式是从上到下处理的。你的第三个模式
^(?P\w+
消耗了一切,因此永远无法访问
关于
帖子

例如:Django希望找到url
about/
的视图。模式
^admin/
^$
不匹配。但是
^(?P\w+
确实如此,因为
关于
以字母或数字开头(包含在
\w
中的字符集)

>>重新导入
>>>重新搜索(“^(?P\w+”,“关于/”)

因此Django找到了匹配项,调用b
views.view\u post
并完成请求。这意味着,更具体的规则必须放在第一位。更好:避免歧义。

您必须更改
url(r'^(?p\w+)、views.view\u post、name='view\u blog\u post')的位置,

urlpatterns=[
#示例:
#url(r'^$'、'blogas.views.home',name='home'),
#url(r“^blog/”,包括('blog.url'),
url(r“^admin/”,包括(admin.site.url)),
url(r'^$',views.index,name='index'),
url(r“^about/$”,views.about,name='about'),
url(r“^posts/$”,views.posts,name='posts'),
url(r'^(?P\w+),views.view\u post,name='view\u blog\u post'),
]

url模式是列表,url的顺序很重要。

您必须更改
url(r'^(?p\w+)、views.view\u post、name='view\u blog\u post')、
的位置

urlpatterns=[
#示例:
#url(r'^$'、'blogas.views.home',name='home'),
#url(r“^blog/”,包括('blog.url'),
url(r“^admin/”,包括(admin.site.url)),
url(r'^$',views.index,name='index'),
url(r“^about/$”,views.about,name='about'),
url(r“^posts/$”,views.posts,name='posts'),
url(r'^(?P\w+),views.view\u post,name='view\u blog\u post'),
]

URL模式是一个列表,URL的顺序很重要。

谢谢您的建议。尽管如此,我还是想知道为什么他们从来没有接触过(这种现象背后的机制),这样我以后可以更容易地解决这个问题。谢谢你的建议。尽管如此,我还是想知道为什么它们永远无法到达(这一现象背后的机制),这样我以后可以更轻松地解决这个问题。谢谢你的解决方案,但似乎只有用斜杠才能到达页面。如果没有,它仍然显示404。我该如何解决这个问题呢?试试这个
url(r'^(?P\w+/$),views.view\u post,name='view\u blog\u post')
我不知道为什么,但它是有效的!也许能解释一下谢谢你的解决方案,但似乎只有用斜杠才能到达页面。如果没有,它仍然显示404。我该如何解决这个问题呢?试试这个
url(r'^(?P\w+/$),views.view\u post,name='view\u blog\u post')
我不知道为什么,但它是有效的!也许能解释一下D
>>> import re
>>> re.search('^(?P<slug>\w+)', 'about/')
<_sre.SRE_Match object at 0x10b5b7be8>
 urlpatterns = [
        # Examples:
        # url(r'^$', 'blogas.views.home', name='home'),
        # url(r'^blog/', include('blog.urls')),

        url(r'^admin/', include(admin.site.urls)),
        url(r'^$', views.index, name='index'),
        url(r'^about/$', views.about, name='about'),
        url(r'^posts/$', views.posts, name='posts'),
        url(r'^(?P<slug>\w+)', views.view_post, name='view_blog_post'),
        ]