我想创建网址以转到这样的链接:examples.com/baiviet/post-example /
这是我的根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个小时。我希望有人可以帮我解决这个问题。谢谢你
答案 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.
请注意,此示例中的正则表达式没有$(字符串结尾匹配字符),但包含尾部斜杠。每当Django遇到include()(django.conf.urls.include())时,它会切断匹配到该点的URL的任何部分,并将剩余的字符串发送到包含的URLconf以进行进一步处理。
错误模式的问题,如{<1}}上的alecxe提及,在解决此问题后会出现(404)。
编辑:
要访问首页,您需要设置一个<slug>
的结尾,或将设置/
设置为APPEND_SLASH
。由于您的网址格式需要True
的前缀 - 现在,如果您不想要它,请在根网址中将/
更改为r'^/'