【问题标题】:Url pattern for alphanumeric(slug) string in djangodjango中字母数字(slug)字符串的网址模式
【发布时间】: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 是呈现标签模板的视图。

标签: python regex django django-templates django-urls


【解决方案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-] 并将其替换为 .让它发挥作用
猜你喜欢
  • 2011-01-25
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-22
相关资源
最近更新 更多