Django urlpatterns-NoReverseMatch位于。。。与#x27相反';没有找到任何参数

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

我正在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 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%}
那样写的吗?