我知道我们不应该使用stackoverflow进行调试,但是在过去的10个小时里我一直在尝试解决此问题,我很抱歉,我深表歉意。
#main project urls.py:
urlpatterns = [
...
path('accounts/',include('employee.urls')),
...
]...
#employee.urls:
urlpatterns = [
...
path('employees/', views.display_employees),
path('edit/<str:employee_ssn>/', views.edit_employee),
...
]
#views.py - edit_employee being used only for testing by now
def display_employees(request):
logged_user = request.user
queryset = Employee.objects.filter(company=logged_user.company)
context = {
'employees': queryset
}
return render(request, 'employees.html', context)
def edit_employee(request, employee_ssn):
context = {}
emp = Employee.objects.filter(ssn=employee_ssn)
context = {
'employee_list': emp
}
return render(request, 'edit-employee.html', context)
#employees.html
<ul>
{% for obj in employees %}
<li>{{ obj.name }}</li>
<li>{{ obj.ssn }}</li>
<li>{{ obj.email }}</li>
<li><a href="{% url '/accounts/edit/' obj.ssn %}">edit</a></li><br>
{% endfor %}
</ul>
#edit-employee.html
<ul>
{% for obj in employee_list %}
<li>{{ obj.name }}</li>
<li>{{ obj.ssn }}</li>
<li>{{ obj.email }}</li>
{% endfor %}
</ul>
单击edit
它时说:
异常类型:NoReverseMatch异常值:找不到'/ accounts / edit /'的反向字符。'/ accounts / edit /'不是有效的视图函数或模式名称。
但是,如果在http://localhost:8000/accounts/edit/<employee_snn>/
浏览器中键入url ,则将edit-employee.html
正常显示。它还说该错误在我的基本模板的第0行中
您不能在模板标签[Django-doc]中使用“模式” 。您应该给视图命名,然后使用它来解析URL,因此:{% url … %}
urlpatterns = [
# …
path('employees/', views.display_employees),
path('edit/<str:employee_ssn>/', views.edit_employee, name='edit-employee'),
# …
]
然后可以在{% url … %}
标记中将其用作参数:
<li><a href="{% url 'edit-employee' obj.ssn %}">edit</a></li><br>
使用{% url … %}
标签的想法是,您可以轻松更改路径模式。只要名称和参数保持不变,它仍将能够解析模板路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句