[英]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.