[英]Django 3.0.8 URL/Template/Routing Troubles “No reverse match”
第一篇文章所以請原諒我的無知,因為這是我的第一個 django 應用程序。
我正在嘗試創建一個模板,該模板顯示所有打開票證列表中有關特定“票證”的所有信息。
不幸的是,每當我嘗試使用模板 url 標簽添加錨點時,我都會收到以下消息:
NoReverseMatch 在 /tickets/tasks/ 反向為 'order' 與 arguments '('',)' 未找到。 嘗試了 1 種模式:['tickets/order/(?P<ticket_id>[^/]+)/$']
錯誤消息已更新。 請參閱下面的更新。
而且它只在這個 HTML 模板上。
以下是我認為能夠闡明問題的所有代碼:
模型.py:
from django.db import models
# Create your models here.
class Ticket(models.Model):
"""A basic support ticket"""
# User ticket title.
ticket_Name = models.CharField(max_length=50)
# When the request was submitted.
ticket_Submitted = models.DateTimeField(auto_now_add=True)
#Ticket Type
ticketTypeChoices=[
('Update', 'Article Edit/Update'),
('Addition', 'New Content/Article Request'),
('Typo', 'Article Typo/Formatting Issue'),
('Issue', 'Website Error/Issue'),
('Other', 'Other'),
]
# Type of ticket (Update, Addition, Typo, Site Issue)
ticket_Type = models.CharField(
max_length=50,
choices=ticketTypeChoices,
default= 'Other'
)
# Users Name
ticket_Contact = models.CharField(max_length=50)
# User Email (for follow up)
ticket_Email = models.EmailField(max_length=254)
# Article URL (if applicable)
ticket_URL = models.CharField(blank=True, max_length=254)
# User description of the issue.
ticket_Description = models.TextField()
#Ticket Status Choices
StatusChoices = [
('Pending', 'Pending'),
('Open', 'Open'),
('Complete', 'Complete'),
('Deferred', 'Deferred'),
('Awaiting Response', 'Awaiting Response'),
]
# Status of the Ticket
ticket_Status = models.CharField(
max_length=50,
choices=StatusChoices,
default= 'Pending'
)
# Comments from HelpDesk Staff
ticket_Comments = models.TextField(blank=True )
#Shows when the ticket was last saved.
ticket_Last_Updated = models.DateTimeField(auto_now=True)
def __str__(self):
"""Return a string representation of the model"""
return self.ticket_Name
視圖.py:
# Imports Models from the app
from . models import *
# Imports from the Forms List
from . forms import TicketForm
# Create your views here.
# View of all active tickets
def ticket(request):
tickets = Ticket.objects.all().order_by('-ticket_Submitted')
context = {'ticket': tickets}
return render(request, 'tickets/joblist.html', context)
# User can view details about a Ticket
def order(request, ticket_id):
order = Ticket.objects.get(id=ticket_id)
context= {'order': order}
return render(request, 'tickets/tix.html', context)
網址.py
from django.urls import path,include
from . import views
app_name='tickets'
urlpatterns = [
# Include default auth urls.
path('', include('django.contrib.auth.urls')),
# Support Ticket Form
path('submit/', views.submit, name='submit'),
# Contact Us Form
path('contact/', views.contact, name='contact'),
# TicketWeblist
path('tasks/', views.ticket, name='tasks'),
# Ticket Details
path('order/<str:ticket_id>/', views.order, name='order' )
]
模板(joblist.html):
{% for tickets in ticket %}
<tr>
<td>{{tickets.ticket_Name}}</td>
<td>{{tickets.ticket_Type}}</td>
<td>{{tickets.ticket_Contact}}</td>
<td>{{tickets.ticket_Status}}</td>
<td>{{tickets.ticket_Submitted}}</td>
<td>{{tickets.ticket_Last_Updated}}</td>
<td><a class="btn btn-sm btn-info" href="{% url 'tickets:order' ticket.id %}">View</a>
</tr>
{% endfor %}
在查看了十幾次代碼后,我可以肯定的是,這是一個以模板錨模板 url 標記開頭的問題。 (查看)但無論我嘗試什么格式,它都會出現這個或類似的錯誤。
更新:在梅爾的建議下,將 url 的“訂單”更改為“門票:訂單”,現在收到以下消息:
NoReverseMatch 在 /tickets/tasks/ 反向為 'order' 與 arguments '('',)' 未找到。 嘗試了 1 種模式:['tickets/order/(?P<ticket_id>[^/]+)/$']
我已經嘗試解決這個問題大約三天,並決心自己解決。 感謝任何類型的幫助,請隨時指出任何意大利面條代碼或缺少注釋,以及我正在尋找成長的方法。
謝謝!
您已經為您的應用程序創建了一個單獨的urls.py
(看起來很像),因此請確保在您的項目urls.py
文件中包含namespace = tickets
。 然后在您的模板中,您應該執行以下操作:
{% url 'tickets:order' ticket.id %}
換句話說,您還需要包含應用程序的名稱。
你已經為你的 url 設置了一個命名空間: app_name = 'tickets'
所以正確的反向 url 將是。
{% url 'tickets:order' tickets.id %}
您可以嘗試將您的order
視圖 function 更改為此 -
def order(request, ticket_id):
active_order = Ticket.objects.get(id=ticket_id)
context= {'order': active_order}
return render(request, 'tickets/tix.html', context)
我剛剛看到您正在將ticket.id 從模板傳遞到視圖,但是代碼中的任何地方都沒有ticket.id。 為什么不嘗試傳遞模板中的值。 它應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.