Django urlpatterns-NoReverseMatch位于。。。与#x27相反';没有找到任何参数
我正在Django中构建一个模式表单,允许用户编辑现有记录的详细信息。具体来说,在Django urlpatterns-NoReverseMatch位于。。。与#x27相反';没有找到任何参数,django,django-templates,django-views,Django,Django Templates,Django Views,我正在Django中构建一个模式表单,允许用户编辑现有记录的详细信息。具体来说,在paper_detail.html中,有一个按钮,用户可以单击该按钮,然后通过ajax以模式形式加载特定的纸张 将纸张加载到模式表单后,用户可以对其进行编辑 当我转到http://127.0.0.1:8000/paper/796134/,我遇到了以下错误: NoReverseMatch at /paper/796134/ Reverse for 'edit_paper' with no arguments not
paper_detail.html
中,有一个按钮,用户可以单击该按钮,然后通过ajax以模式形式加载特定的纸张
将纸张加载到模式表单后,用户可以对其进行编辑
当我转到http://127.0.0.1:8000/paper/796134/
,我遇到了以下错误:
NoReverseMatch at /paper/796134/
Reverse for 'edit_paper' with no arguments not found. 1 pattern(s) tried: ['search/edit/(?P<pk>\\d+)/$']
我发现,如果我从编辑纸张
模式中删除(?p\d+)
,页面加载会很好。(即
http://127.0.0.1:8000/paper/796134/
在以下情况下正确加载
url(r'^edit/(?P\d+)/$,views.edit\u paper,name='edit\u paper'),
url(r'^edit/$,views.edit\u paper,name='edit\u paper'),
这个问题可以解决,但我相信我实际上需要在编辑论文
模式中设置(?p\d+)
。这是
因为我需要通过在表单操作中包含{{object.pk}
作为参数,将纸张的pk
传递回edit_paper
函数
请告诉我什么是最好的行动方案!非常感谢
这是edit\u paper\u modal.html
模板,我将纸张的pk
传递回edit\u paper
功能,以将有关纸张的更新信息保存在数据库中
<div class="modal-dialog modal-lg" role="document">
<form action="{% url 'search:edit_paper' %} pk={{object.pk}}" method="post" class="form" >
{% csrf_token %}
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">Edit Paper</h4>
</div>
<div class="modal-body">
{% csrf_token %}
{{form|crispy}}
{{ form.media }}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<input type="submit" class="btn btn-primary" value="Save changes" />
</div>
</div>
</form>
</div>
要以模态形式加载记录,我在views.py
中有一个load\u paper
函数:
urlpatterns = [
path('paper/<int:pk>/', views.paper_detail, name='paper_detail'),
url('', views.load_paper, name='load_paper'),
url(r'^edit/(?P<pk>\d+)/$', views.edit_paper, name='edit_paper'),
path('', views.HomePageView.as_view(), name='home'),
]
def load_paper(request):
pk = request.GET.get('pk')
object = get_object_or_404(Paper, pk = pk)
form = PaperForm(instance=object)
return render(request, 'edit_paper_modal.html', {
'object': object,
'form': form,
})
def edit_paper(request, pk=None):
template_name = 'edit_paper_modal.html'
if request.POST:
paper = get_object_or_404(Paper, pk = pk)
form = PaperForm(instance=paper, data=request.POST)
if form.is_valid():
form.save()
return render(request, 'paper_detail.html', {'paper': paper})
def paper_detail(request, pk):
paper = get_object_or_404(Paper, pk=pk)
return render(request, 'paper_detail.html', {'paper': paper})
编辑:
包括paper\u detail.html
{% if paper %}
<h4>Details for <b>{{ paper.title }}</b></h4>
<!-- <form method="post" enctype="multipart/form-data">
{% csrf_token %}
</form> -->
<button type='button' class="btn btn-primary" data-toggle="modal" data-target="#modal" id="myBtn" data-pid={{paper.pk}}>Edit Paper Details</button>
{% csrf_token %}
<!-- Modal -->
<div class="modal fade" id="myModal" role="dialog" > {% csrf_token %}
<div class="modal-dialog">
</div>
</div>
<p>Status: {{paper.get_status_display }} </p>
<a href="#" class="like_button" data-pid="{{ paper.pk }}"> <span class="like_span fa fa-thumbs-up"></span>
<strong id="like_count_{{ paper.pk }}">{{paper.likes}} </strong> </a>
<p>Abstract:
<br>{{ paper.abstract }}</p>
{% endif %}
</div>
{%if纸张%}
{{paper.title}的详细信息
编辑纸张详细信息
{%csrf_令牌%}
{%csrf_令牌%}
状态:{paper.get_Status_display}
摘要:
{{paper.abstract}}
{%endif%}
在您的
中,您太早关闭了{%url…%}
标记。现在它显示:
<form action="{% url 'search:edit_paper' %} pk={{object.pk}}">
但您应该将其替换为:
<form action="{% url 'search:edit_paper' pk=object.pk %}">
请注意,在模板标记中,不应该对变量使用双花括号({…}
)。在
中,您过早地关闭了{%url…%}
标记。现在它说:
<form action="{% url 'search:edit_paper' %} pk={{object.pk}}">
但您应该将其替换为:
<form action="{% url 'search:edit_paper' pk=object.pk %}">
请注意,在模板标记中,不应该对变量使用双花括号(
{…}
)。感谢您指出这一点!!我已经解决了这个问题,但我仍然在/paper/796134/Reverse处得到了错误,NoReverseMatch对于“edit\u paper”,没有找到任何参数。尝试了1种模式:[“search/edit/(?p\\d+/$”]
当我加载http://127.0.0.1:8000/paper/796134/
@OnyiL:通常Django还会显示模板中出错的部分。您的模板中可能存在另一种情况,或多或少都会出现相同的错误。@OnyiL:请在模板中搜索其他edit\u paper
URL,然后尝试重新启动Web服务器。我正在查找非常困难,但似乎找不到其他有问题的edit_-paper
URL。另一方面,在查看回溯时,它说:“模板错误:在Template/Users/onyi/Documents/jikan/jikan/templates/base.html中,没有找到参数的“edit_-paper”在第0行出现错误。尝试了1个模式:['search/edit/(?P\\d+)/']``这是指向你说的同一个错误,还是我应该更仔细地检查一下我的base.html?是的,你是像{%url'search:edit_paper'pk=object.pk%}
那样写的吗block?谢谢你指出这一点!!我修复了这个问题,但我仍然在/paper/796134/Reverse处得到了错误,即“edit\u paper”没有找到任何参数。尝试了1个模式:[“search/edit/(?P\\d+)/$”]当我加载http://127.0.0.1:8000/paper/796134/
@OnyiL:通常Django还会显示模板中出错的部分。您的模板中可能存在另一种情况,或多或少都会出现相同的错误。@OnyiL:请在模板中搜索其他edit\u paper
URL,然后尝试重新启动Web服务器。我正在查找非常困难,但似乎找不到其他有问题的edit_-paper
URL。另一方面,在查看回溯时,它说:“模板错误:在Template/Users/onyi/Documents/jikan/jikan/templates/base.html中,没有找到参数的“edit_-paper”在第0行出现错误。尝试了1个模式:['search/edit/(?P\\d+)/']``这是指向你说的同一个错误,还是我应该更仔细地检查我的base.html?是的,你是像{%url'search:edit_paper'pk=object.pk%}
那样写的吗?