【发布时间】:2019-01-18 08:24:09
【问题描述】:
我正在用 django 制作一个博客网站。我正在使用 slug 来识别特定的文章。我正在为 3 个不同的领域制作这些博客,即草图、蛋糕和兰戈利斯。但这里的问题是,这三个网址的 slug 正则表达式将变得相同。为了方便起见,我还命名了这些 url,但不知何故无法控制匹配这三个的顺序。它适用于首先写入 url 文件中的 url 的命名组正则表达式。我在下面提供了必要的文件。我的主要网站名称是“网站”,应用程序名称是“艺术”。对于下面给出的命名组 URL 的顺序,错误是“Rangoli 匹配查询不存在”。所以只有第一个命名的组 url 有效。谁能帮我解决这个问题。提前致谢!
艺术/urls.py
url(r'list_sketches.html$', views.sketches_list, name='sketches_list'),
url(r'list_rangolis.html$', views.rangolis_list, name='rangolis_list'),
url(r'list_cakes.html$', views.cakes_list, name='cakes_list'),
url(r'^(?P<slug>[\w-]+)/$', views.rangolis_detail, name='rangolis_detail'),
url(r'^(?P<slug>[\w-]+)/$', views.sketches_detail, name='sketches_detail'),
url(r'^(?P<slug>[\w-]+)/$', views.cakes_detail, name='cakes_detail'),
艺术/views.py
def sketches_list(request):
sketches = Sketch.objects.all().order_by('-date')
return render(request, 'art/list_sketches.html', {'sketches':sketches})
def sketches_detail(request, slug):
sketch = Sketch.objects.get(slug=slug)
return render(request, 'art/detail_sketches.html', {'each':sketch})
list_sketches.html
{% extends "me/base_layout.html" %}
{% block content %}
{% for each in sketches %}
<h1><a href="{% url 'art:sketches_detail' slug=each.slug %}"> {{ each.title }}</a> </h1>
<p>{{ each.date}}</p>
<p>{{ each.snippet }}</p>
{% endfor %}
{% endblock %}
detail_sketches.html
{% extends "me/base_layout.html" %}
{% block content %}
<h1> {{ each.title }} </h1>
<p>{{ each.date}}</p>
<img src="{{ each.sketch.url}}"/>
<p>{{ each.body }}</p>
{% endblock %}
【问题讨论】:
标签: regex django models slug modelform