django - 没有反向匹配错误但函数存在?
问题描述
我正在尝试renew
为关键库存系统实现一个功能。但是当我呈现该页面时,即使我映射了正确的 URL 并使用了正确的函数名称,它也会显示 Reversematcherror。
这是我的模板:(URL标签一直在右边的超长线上)
{% block content %}
<h1>All Borrowed Keys</h1>
{% if keyinstance_list %}
<ul>
{% for keyinst in keyinstance_list %}
<li class="{% if keyinst.is_overdue %}text-danger{% endif %}">
<a href="{% url 'roomkey-detail' keyinst.roomkey.pk %}">{{keyinst.roomkey}}</a>
({{ keyinst.due_back }})
{% if user.is_staff %}
- {{ keyinst.borrower }}
{% endif %}
{% if perms.catalog.can_mark_returned %}
- <a href="{% url 'renew_key_user' keyinst.id %}">Renew</a>
{% endif %}
</li>
{% endfor %}
</ul>
{% else %}
<p>There are no keys borrowed.</p>
{% endif %}
{% endblock %}
我的 urls.py:
path('key/<uuid:pk>/renew/', views.renew_key_user, name='renew-key-user'),
path('key/<int:pk>/detail', views.KeyDetailView.as_view(), name='roomkey-detail'),
视图.py:
@permission_required('catalog.can_mark_returned')
def renew_key_user(request, pk):
"""
View function for renewing a specific keyInstance by admin
"""
key_inst=get_object_or_404(KeyInstance, pk = pk)
# If this is a POST request then process the Form data
if request.method == 'POST':
# Create a form instance and populate it with data from the request (binding):
form = RenewKeyForm(request.POST)
# Check if the form is valid:
if form.is_valid():
# process the data in form.cleaned_data as required (here we just write it to the model due_back field)
key_inst.due_back = form.cleaned_data['renewal_date']
key_inst.save()
# redirect to a new URL:
return HttpResponseRedirect(reverse('all-borrowed-keys') )
# If this is a GET (or any other method) create the default form.
else:
proposed_renewal_date = datetime.date.today() + datetime.timedelta(weeks=3)
form = RenewKeyForm(initial={'renewal_date': proposed_renewal_date,})
return render(request, 'catalog/roomkey_renew_user.html', {'form': form, 'keyinst':key_inst})
class KeyDetailView(generic.DetailView):
model = RoomKey
错误是说
未找到“views.renew_key_user”的反向。'views.renew_key_user' 不是有效的视图函数或模式名称。
解决方案
更新模板中的这一行。
<a href="{% url 'renew-key-user' keyinst.id %}">Renew</a>
因为 url 中的名称是 renew-key-user
path('key/<uuid:pk>/renew/', views.renew_key_user, name='renew-key-user'),
推荐阅读
- javascript - Vuejs - 将原始 html 链接渲染到
- javascript - 用于将 <=lastdate+30d 拆分为 5 个数组的正则表达式
- kotlin - 类不是抽象的,不实现抽象基类成员
- r - 'R 动画' 仅显示静态图像而不是动画
- visual-c++ - 处理 listcontrol 列标题复选框单击问题?通知不工作
- kotlin - IntelliJ 中的 Kotlin 比较器编译错误
- java - 如何在ubuntu中使用java程序查找网络接口索引号
- oracle - Phalcon 使用 Oracle 视图
- php - 我在 orangehrm 开发新模块
- node.js - 如何使用 Express 在另一条路由上渲染一些路由并从 CDN 提供 SPA