[英]Unable to pass a view function with two arguments in Django resulting in No Reverse Match Error
我無法理解為什么會出現此錯誤。 如果有人可以解釋我為什么以及如何修復它,我希望它能糾正我可能對Django
views
和urls
的潛在誤解。
django.urls.exceptions.NoReverseMatch: Reverse for 'download' with keyword arguments '{'name': 'Dr. XYZ', 'date': '14 July 2020'}' not found. 1 pattern(s) tried: ['download/$']
我的views.py
有一個名為download
的函數,它有兩個參數: name
和date
視圖.py
def download (request, name, date):
x = date.split(" ")
date = f"29 {x[3]} {x[4]}"
image = Image.open("certificates\static\certificates\Certificate_0001.jpg")
font_type = ImageFont.truetype('arial.ttf', 70)
font_type_2 = ImageFont.truetype('arial.ttf', 35)
draw = ImageDraw.Draw(image)
draw.text(xy=(810, 740), text=name, fill=(0,102,0), font=font_type)
draw.text (xy=(330, 1230), text=date, fill=(0,102,0), font=font_type_2)
image.save(f"certificates\static\certificates\{name}.pdf", "PDF", resolution=100.0)
return HttpResponse ("works")
我在我的html
文件中單擊鏈接時調用此函數。
<a class="nav-link active" href="{% url 'certificates:download' name=name date=program %}" download>Download Certificate</a>
網址配置為:
網址.py
from django.urls import path
from . import views
app_name = "certificates"
urlpatterns = [
path("", views.index, name="index"),
path("download", views.download, name="download")
]
已確認我的函數中沒有語法或其他邏輯錯誤。 如果我刪除我的html
文件中的兩個參數,那么沒有錯誤,即如果我說html href="{% url 'certificates:download' %}
。但是,如果我帶來了兩個參數name
和date
我會收到此NoReverseMatch
錯誤.
請解釋什么是錯的?
您需要在 URL 定義中指定函數參數
path("download/<str:name>/<str:date>", name="download")
這樣,反向函數可以使用正確的參數解析您的函數。
<a ... > 標簽中的鏈接轉到“證書/下載/某個名稱/某個日期”。 即你傳遞參數'somename'和'somedate'所以你應該在你的url配置中添加這些參數
path("download/<str:name>/<str:date>", views.download, name="download")
然后你在你的視圖函數def download (request, name, date):
讓我知道它是否有效
您還需要將這些參數添加到urls.py
文件中,即:
path("download/<str:name>/<str:date>/", views.download, name="download"),
但是,我不確定您的日期格式,因此您可能需要稍微更改該部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.