Reverse for 'details' with arguments '('Federal Airports Authority of Nigeria (FAAN)',)' and keyword arguments '{}' not found.
1 pattern(s) tried:
['details/(?P<company_name>[0-9A-Za-z]+)/$']
这是我的urls.py
urlpatterns = [
url(r'^$', views.index, name='index'),
url(r'^details/(?P<company_name>[0-9A-Za-z]+)/$', views.details, name='details'),
url(r'^full_list/$', views.full_list, name='full_list' ),
]
这是models.py
class CompanyDetail(models.Model):
name = models.CharField(max_length=300)
company_logo = models.FileField(default='')
company_info = models.TextField()
company_address = models.TextField()
tag = models.CharField(max_length=300)
def __str__(self):
return self.name
这是我的views.py
def details(request, company_name):
company = CompanyDetail.objects.get(name=company_name)
return render(request, 'company_profiles/details.html',
{'company':company} )
def full_list(request):
lists = CompanyDetail.objects.all()
return render(request, 'company_profiles/full_list.html',
{'lists':lists})
这是模板:
{% extends 'company_profiles/base.html' %}
{% block content %}
{% for company in lists %}
<p>
<div class="alert alert-info" role="alert">
<a href="{% url 'company_profiles:details' company.name %}" class="alert-link">{{ company }}</a>
</div>
</p>
{% empty %}
<p>No companies found</p>
{% endfor %}
{% endblock content %}
当公司名称中有空格时,我才会得到反向匹配。
答案 0 :(得分:1)
那是因为你的正则表达式
(?P<company_name>[0-9A-Za-z]+)
不允许公司名称中包含空格。 Django正确告诉你没有反向匹配。
选择以下选项之一:
urls.py
中的正则表达式以允许空格我推荐第二个选项。
答案 1 :(得分:-1)
您应该在urls.py中尝试匹配公司名称
WindowComponent
还有一个原因是你没有使用公司ID作为参数?如下所示:
在urls.py中
(?P<company_name>[\w-]+)
模板中的
(?P<company_id>[0-9]+)/