如何解决Django视图问题筛选的票不出现
我目前正在Django中的一个项目上工作,有人称它为“错误跟踪程序”或“票务跟踪程序”。这里的目标是创建一个帖子或“票证”,为开发团队详细描述网站或软件中的错误。
每个“凭单”都具有常规信息,例如名称,摘要等,但也包含用于软件语言或错误类型的“类别”(类似于博客的类别)。每张票还具有一个“优先级”,该优先级是根据报告者遇到的错误的严重性而以类似于类别的方式开发的。
我已经开发出一种方法来单击类别名称并查看同一类别中的票证列表。这是成功的,并且效果很好!当然,我在该过程中的下一步是使用相同的方法来实现票证优先级。我的目标是能够单击优先级,并查看具有该优先级的所有“严重”故障单的过滤视图,就像我的类别设置一样。
这是我的问题:
当我单击优先级(低,中,高和严重)时,它将带我到该优先级的ticket_priority.html模板,但在以下情况下不过滤或显示该优先级的任何故障单实际上有优先级的票证。我要做的就是采用相同的方法来构建“类别”,但将其作为“优先级”实施,以便团队根据漏洞的严重性进行过滤。
我认为我的ticket_priority视图有问题,但是我只是不知道这笔交易是什么,需要多加注意。
首先这是我的模特:
from django.db import models
from django.utils.timezone import timezone
from datetime import datetime
# Create your models here.
#Priority
class Priority(models.Model):
name = models.CharField(max_length=20,null=True)
def __str__(self):
return self.name
#Category
class Category(models.Model):
name = models.CharField(max_length=20)
def __str__(self):
return self.name
#TICKET
class Ticket(models.Model):
#BugID
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100,blank=True,null=True)
reporter = models.CharField(max_length=100,null=True)
created_on = models.DateTimeField(auto_now_add=True,null=True)
last_modified = models.DateTimeField(auto_now=True)
#BugOverview
summary = models.TextField(blank=True,null=True)
url = models.URLField(blank=True,null=True)
image = models.ImageField(upload_to='media/images/',null=True)
#BugEnvironment
platform = models.CharField(max_length=20,null=True)
operating_system = models.CharField(max_length=20,null=True)
browser = models.CharField(max_length=20,null=True)
categories = models.ManyToManyField('Category',related_name='posts')
#BugDetails
steps_to_reproduce = models.TextField(blank=True,null=True)
expected_result = models.CharField(max_length=100,null=True)
actual_result = models.CharField(max_length=100,null=True)
#BugTracking
priorities = models.ManyToManyField('Priority',related_name='posts')
assigned_to = models.CharField(max_length=100,null=True)
completed = models.BooleanField(db_column='Completed',default=False)
datecompletion = models.DateTimeField(db_column='DateCompletion',null=True)
def set_completion(self):
self.completed = True
self.datecompletion = datetime.now()
self.save()
def __str__(self):
return self.title
接下来是我的ticket.category和ticket_priority的views.py:
# TICKET CATEGORY INDEX
@login_required(login_url='/accounts/login/')
def ticket_category(request,category):
tickets = Ticket.objects.filter(
categories__name__contains = category
)
context = {
"category": category,"tickets": tickets
}
return render(request,'ticket_category.html',context)
#################################################################3
# TICKET PRIORITY INDEX
@login_required(login_url='/accounts/login/')
def ticket_priority(request,priority):
tickets = Ticket.objects.filter(
priorities__name__contains = priority
)
context = {
"priority": priority,'ticket_priority.html',context)
这是我的ticket_category.html模板:
{% extends "base.html" %}
{% load static %}
{% block page_content %}
<div class = "container">
<div class = "row">
<!-- Post Content Column -->
<div class="col-lg-8">
<h1> {{ category | title }} </h1>
{% for ticket in tickets %}
<div class="card">
{% for priority in ticket.priorities.all %}
<div class="card-header">
Ticket #{{ ticket.id}} |
<a href="{% url 'ticket_priority' priority.name %}">
{{ priority.name }}
</a>
</div>
{% endfor %}
<div class="card-body">
<h5 class="card-title">{{ ticket.title }}</h5>
<p class="card-text">{{ ticket.summary|truncatewords:20 }}</p>
<p class="card-text"> Categories:
{% for category in ticket.categories.all %}
<a href="{% url 'ticket_category' category.name %}">
{{ category.name }}
</a>
{% endfor %}
</p>
<a href="{% url 'ticket_detail' ticket.pk %}" class="btn btn-primary">View Ticket </a>
<a href="{% url 'edit_ticket' ticket.pk %}" class="btn btn-secondary">Edit Ticket </a>
<a href="{% url 'completed_ticket' ticket.pk %}" class="btn btn-success"> Ticket Completed </a>
<a href="{% url 'delete_ticket' ticket.pk %}" class="btn btn-danger"> Delete Ticket </a>
</div>
</div>
<br>
{% endfor %}
</div><!-- Column -->
{% include "sidebar.html" %}
</div> <!-- Row -->
</div><!-- Container-->
{% endblock %}
这是我的ticket_priority.html模板:
{% extends "base.html" %}
{% load static %}
{% block page_content %}
<div class = "container">
<div class = "row">
<!-- Post Content Column -->
<div class="col-lg-8">
<h1> {{ priority | title }} </h1>
{% for ticket in tickets %}
<div class="card">
{% for priority in ticket.priorities.all %}
<div class="card-header">
Ticket #{{ ticket.id}} |
<a href="{% url 'ticket_priority' priority.name %}">
{{ priority.name }}
</a>
</div>
{% endfor %}
<div class="card-body">
<h5 class="card-title">{{ ticket.title }}</h5>
<p class="card-text">{{ ticket.summary|truncatewords:20 }}</p>
<p class="card-text"> Categories:
{% for category in ticket.categories.all %}
<a href="{% url 'ticket_category' category.name %}">
{{ category.name }}
</a>
{% endfor %}
</p>
<a href="{% url 'ticket_detail' ticket.pk %}" class="btn btn-primary">View Ticket </a>
<a href="{% url 'edit_ticket' ticket.pk %}" class="btn btn-secondary">Edit Ticket </a>
<a href="{% url 'completed_ticket' ticket.pk %}" class="btn btn-success"> Ticket Completed </a>
<a href="{% url 'delete_ticket' ticket.pk %}" class="btn btn-danger"> Delete Ticket </a>
</div>
</div>
<br>
{% endfor %}
</div><!-- Column -->
{% include "sidebar.html" %}
</div> <!-- Row -->
</div><!-- Container-->
{% endblock %}
当ticket_priority.html模板呈现时,所有内容都会出现(base.html,侧边栏,优先级标题等)-但没有任何票证-这使我认为这是我的观点的问题。
在此问题上停留了一天以上。没有引发任何错误,没有任何优先级的票证出现。他们确实出现在每个类别中。任何帮助或朝着正确方向发展的观点都将非常有用。谢谢!
解决方法
我实际上最终独自解决了这个问题,答案自然很简单。
我的模型或视图没有问题,这是我的网址。 URL路径的顺序很重要-尽管我不确定它的工作原理。
在修复之前,我的“优先级”路由到我的“类别”,然后呈现该视图。
path("<category>/",views.ticket_category,name="ticket_category"),path("<priority>/",views.ticket_priority,name="ticket_priority"),
基本上我的网址不正确。我只是将优先级网址移到了类别上方。
path("<priority>/",path("<category>/",
现在,当我单击导致优先级的链接时,它将显示特定优先级组中的所有内容。
仍然不确定是什么导致了它的修复,但是它的工作原理。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。