重点是,我有练习和解决方案 当我单击execsise时,有添加解决方案按钮,但是... 我收到此错误:
django.urls.exceptions.NoReverseMatch: Reverse for 'add_solution' with arguments '('',)' not found. 1 pattern(s) tried: ['share/(?P<pk>\\d+)/add_solution/$']
我的urls.py:
re_path(r'^(?P<pk>\d+)/add_solution/$', views.add_solution, name='add_solution'),
我的观点:
def add_solution(request, pk = None):
if request.method == "POST":
form = ShareForm(request.POST)
if form.is_valid():
form.save()
return redirect('Share:show_code')
else:
form = ShareForm()
return render(request, 'share/add_solution.html', {'form': form})
我的模板:
<form method="post" action="{% url 'Share:add_solution' pk%}">
{% csrf_token %}
<button class="btn btn-success px-5">Add solution</button>
</form>
如果我从网址中删除(?P \ d +),ir会起作用,但是我需要手动指定练习。但是我想从URL获取运动ID,并在添加解决方案时自动填充运动填充。 预先谢谢你。
答案 0 :(得分:1)
Reverse for 'add_solution' with arguments '('',)'
模板上下文中的pk
变量为空字符串''
或未定义。它应该是一个数字。
<form method="post" action="{% url 'Share:add_solution' pk %}">