django中字母数字(slug)字符串的网址模式
Posted
技术标签:
【中文标题】django中字母数字(slug)字符串的网址模式【英文标题】:Url pattern for alphanumeric(slug) string in django 【发布时间】:2015-09-21 20:37:39 【问题描述】:我正在尝试使这个 url 模式工作,但我没有得到任何地方。我得到一个找不到页面的错误。我的 url 栏中的 url 是 http://127.0.0.1:8000/tags/?Python
如果我选择 python slug,但它不使用定义的网址。
我想要做的是,打开一个新模板,其中包含与 slug 相关的信息。
这是我的看法:
def tags(request,slug):
verse = get_object_or_404(Tag, slug=slug)
return render(request, 'tags.html','verse':verse)
这是我的网址:
url(r'^tags/(?P<slug>[\W-]+)/$', views.tags),
这是我的模板:
Tagged under - % for i in verse.tags.all%<a href='/tags'> i | </a>% endfor %
我尝试在模板中将查询字符串传递为:
/tags/q=i
我也试过用:
% url tags i.slug %
(基于Slug Url Regex in Django)
但到目前为止,没有任何效果。我想打开标签模板并显示所选的 slug。
【问题讨论】:
views.tags 中有什么?[\W-]
也可以替换为 \W
,因为在 Python 中 -
已经与 \W
匹配。
@Andie2302 views.tags 是呈现标签模板的视图。
【参考方案1】:
您必须在url
中设置名称,类似如下:
url(r'^tags/(?P<slug>.+)/$', views.tags, name='tags'),
在模板中将 url
标签更改为:
% url "tags" slug=i.slug %
【讨论】:
现在我得到 NoReverseMatch at / Reverse for 'tags' with arguments '()' 和关键字参数 'u'slug': u'Python'' not found。尝试了 1 种模式:['tags/(?P以上是关于django中字母数字(slug)字符串的网址模式的主要内容,如果未能解决你的问题,请参考以下文章
难以将 slug 添加到 Django 中的通用详细信息视图