【发布时间】:2020-04-30 03:40:33
【问题描述】:
每当我点击 index.html 中的 job_title 链接时,django 都会将我重定向到 detail 网址并从那里重定向到 views.py 文件中的 DetailView,最后打开 detail.html 文件。 我正在为 category 链接做同样的事情。但它给了我一个错误:找不到与查询匹配的工作。 (页面未找到提出者:JobPanel.views.DetailView)。我正在从数据库中获取正确的 slug 到 index.html。
urls.py
path('<slug:detail_slug>/', DetailView.as_view(), name='detail'),
path('<slug:cat_slug>/', CategoryView.as_view(), name='category'),
views.py
class DetailView(generic.DetailView):
model = Job
template_name = 'JobPanel/detail.html'
slug_url_kwarg = 'detail_slug'
slug_field = 'slug'
class CategoryView(generic.DetailView):
model = Job
template_name = 'JobPanel/category.html'
slug_url_kwarg = 'cat_slug'
slug_field = 'slug'
index.html
<a href="{% url 'jobpanel:detail' job.slug %}">{{ job.job_title }}</a>
<br>
{% for cat in job.categories.all %}
<a href="{% url 'jobpanel:category' cat.slug %}">{{ cat }}</a>
{% endfor %}
models.py
class Category(models.Model):
category = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
def __str__(self):
return self.category
class Job(models.Model):
job_title = models.CharField(max_length=250)
job_description = models.TextField()
slug = models.SlugField(unique=True)
【问题讨论】:
-
两种模式完全重叠,因此总是会触发第一个视图。