【问题标题】:Django NoReverseMatch using views parameterDjango NoReverseMatch 使用 views 参数
【发布时间】:2019-12-11 02:23:16
【问题描述】:

我正在做一个库存应用程序,并且我已经包含了要对保存的项目执行的操作 (CRUD)。但是,当单击“调度”时,我收到此错误,NoReverseMatch at /inventory 找不到带有参数“('hhe/ge/3.009/67-8',)”的“调度”的反向。尝试了 1 种模式:['dispatch/(?P[^/]+)$'] hhe/ge/3.009/67-8 是 model_numbers 之一。

views.py 中的dispatch_view

def dispatch_view(request,model_number):
    if request.method=='POST':

        dispatch_item=New_asset.objects.get(model_number=model_number)
        form= dispatch_form(request.POST,instance=dispatch_item)

        if form.is_valid():

                post = form.save(commit=False)

                post.save()
                return HttpResponseRedirect('/inventory')

    else:
                form = dispatch_form()

    return render(request, 'dispatch.html', {'form': form,'dispatch_item':dispatch_item})

url.py path('dispatch/<str:model_number>', views.dispatch_view,name='dispatch'), url(r'^inventory$', views.allassets,name='inventory'),

inventory.html

    {% for asset in query %}
                              <tr class="clickable-row">
                                  <td>{{asset.asset_name}}</td>
                                  <td>{{asset.model_number}}</td>
                                  <td>{{asset.quantity_received}}</td>
                                  <td>{{asset.specification}}</td>
                                  <td>{{asset.supplied_by}}</td>
                                  <td>{{asset.department_assigned}}</td>
                                  <td>{{asset.date_received}}</td>
                                  <td><a href=" {%url 'dispatch' asset.model_number%}"><span 
                                                 class="glyphicon glyphicon-pencil" >Dispatch</span></a>

谢谢

【问题讨论】:

  • 也发布您的模型

标签: django python-3.x django-views


【解决方案1】:

我没有代表发表评论,所以这必须是一个答案。

您是否尝试过如下所示将您的应用名称放在“dispatch”前面?

href="{% url 'inventory_app_name:dispatch' asset.model_number %}"

【讨论】:

  • 已经这样做了,但我发现“app_name”不是一个注册的命名空间。
【解决方案2】:

假设型号是整数,请尝试使用以下代码:

url(r'^ dispatch/(?P<model_number>\d+)/$', views.dispatch_view, name='dispatch'),

然后您可以通过以下方式访问 kwargs 中的型号:

kwargs['model_number']

【讨论】:

  • 我仍然遇到同样的错误。 model_number 是 str,我在 url 中使用 str 转换器的原因。我认为这可能是错误的: 1. CRUD 操作在库存页面/视图上,但我的参数和 url 参数在调度视图和 url 上。 2.model_number 正在传递,但是库存视图/url 无法获取参数。再次出错:**NoReverseMatch at /inventory ** **Reverse for 'dispatch' with arguments '('hhe/ge/3.009/67-8',)' not found。尝试了 1 种模式:['dispatch/(?P[0-9]+)$'] ** 我希望这会有所帮助
  • 这是我将转换器从 int 更改为 str 后的错误 ** NoReverseMatch at /inventory Reverse for 'dispatch' with arguments '('hhe/ge/3.009/67-8',)' not成立。尝试了 1 种模式:['dispatch/(?P[^/]+)$'] **
猜你喜欢
  • 1970-01-01
  • 2015-02-25
  • 2012-12-11
  • 1970-01-01
  • 2017-05-14
  • 2013-06-12
  • 1970-01-01
  • 2022-08-09
  • 2019-07-15
相关资源
最近更新 更多