找不到Django Page

时间:2015-01-18 21:44:19

标签: django django-urls

我想创建网址以转到这样的链接:examples.com/baiviet/post-example /

  • * post-example is slug

这是我的根urls.py:

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

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^$', include('blog.urls')),
)

然后,这是我的blog / urls.py:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from blog import views

urlpatterns = patterns('',
                       url(r'^$', views.index, name='index'),
                       url(r'^baiviet/(?P<slug>)/$', views.view_post, name='viewpost'),
                       )

我的views.py:

def view_post(request, slug):
    getpost = get_object_or_404(Blog, slug=slug)
    return render(request, 'view_post.html', {'post':getpost})

我的view_post.html:

{{ post.content }}

我唯一拥有的是“找不到页面”错误。我试图解决它,我发布这个问题需要2个小时。我希望有人可以帮我解决这个问题。谢谢你

2 个答案:

答案 0 :(得分:2)

您为网址配置了空捕获组

url(r'^baiviet/(?P<slug>)/$', views.view_post, name='viewpost')
                  HERE ^

你需要提供一个匹配的模式,例如:字母数字,下划线和破折号:

url(r'^baiviet/(?P<slug>[a-zA-Z0-9_-]+)/$', views.view_post, name='viewpost')

答案 1 :(得分:2)

404的原因是你的根urlconf中有

url(r'^$', include('blog.urls'))

此处,$表示网址格式的结束。将其更改为

url(r'^/', include('blog.urls'))
#      ^ note the $ shoudl be replaced by / when you are doing an include. 

以下是relevant documentation

  

请注意,此示例中的正则表达式没有$(字符串结尾匹配字符),但包含尾部斜杠。每当Django遇到include()(django.conf.urls.include())时,它会切断匹配到该点的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。

错误模式的问题,如{<1}}上的alecxe提及,解决此问题后会出现(404)。

编辑:

要访问首页,您需要设置一个<slug>的结尾,或将设置/设置为APPEND_SLASH。由于您的网址格式需要True的前缀 - 现在,如果您不想要它,请在根网址中将/更改为r'^/'