我正在尝试在/ blog / *之后包含所有字符,包括连字符,并将它们传递给views.py中的函数。
这是我的网址
/blog/entry-id-01
我在urls.py
中有这个urls(r'^blog/(?P<entry>[-\w]+)/$, blog_entry)
然而,当我加载我的页面时。我收到以下错误:
TemplateDoesNotExist at /blog/entry-id-01
我的例外值是:
blog_pages/articles/entry.html
有没有办法包括所有字符,包括连字符?
编辑:添加了view.py
def blog_entry (request, entry):
return render( request, 'blog_pages/articles/'+entry+'.html')
答案 0 :(得分:1)
匹配单词字符的正则表达式应为\w
而不是/w
,并且您还需要指定指定捕获组的名称。
url(r'^blog/(?P<id>[-\w]+)/$', blog_entry)
^^ ^
答案 1 :(得分:0)
如评论中所述,您的错误与正则表达式无关,如果是这种情况,它将返回NoReverseMatch。您可以通过将URL指向可行的其他视图,或者通过更改视图返回到可用的模板的模板文件来轻松证明这一点。
我想你每个可能的条目都没有不同的html模板文件
'blog_pages/articles/entry-n.html'
并且您更有可能拥有一个所有条目都应该使用的单个html模板,因此您应该引用
'blog_pages/articles/entry.html'
答案 2 :(得分:0)
我通过使用此正则表达式修复了我的问题
(?P<entry>[^/]+)