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\\W+)/$'] 最后得到了它。问题也出在我的网址上。我不得不删除 [\W-] 并将其替换为 .让它发挥作用

以上是关于django中字母数字(slug)字符串的网址模式的主要内容,如果未能解决你的问题,请参考以下文章

难以将 slug 添加到 Django 中的通用详细信息视图

Django 2+ 中的多个可选 URL 参数

Django的路由层

Django:使用重复的 slug 管理诸如 id:slug 之类的 url

蛞蝓 Django 领域;我们需要这个吗? [复制]

Django UserProfile slug 字段