我得到了错误 NoReverseMatch at /delete_mat/11/ 在 Django 中的应用程序之一

如何解决我得到了错误 NoReverseMatch at /delete_mat/11/ 在 Django 中的应用程序之一

冰雹开发者。我在现有的 Django 项目中创建了第二个应用程序。应用程序中的 urls.py 路由工作正常,但视图 edit_mat、update_mat 和 delete_mat,尽管执行了操作但访问了数据库,但不会重新加载索引页面。我不访问数据库的视图工作得很好。 不知道还能做什么。你能帮忙吗?

错误

noreverseMatch at /delete_mat/11/
Reverse for 'material' not found. 'material' is not a valid view function or pattern name.
Request Method: GET
Request URL:    http://127.0.0.1:8000/delete_mat/11/
Django Version: 3.2
Exception Type: noreverseMatch
Exception Value:    
Reverse for 'material' not found. 'material' is not a valid view function or pattern name.
Exception Location: C:\webcq\venv\lib\site-packages\django\urls\resolvers.py,line 694,in _reverse_with_prefix
Python Executable:  C:\webcq\venv\Scripts\python.exe
Python Version: 3.8.6
Python Path:    
['C:\\webcq','C:\\Users\\Lewis\\AppData\\Local\\Programs\\Python\\python38\\python38.zip','C:\\Users\\Lewis\\\AppData\\Local\\Programs\\Python\\python38\\DLLs','C:\\Users\\Lewis\\\AppData\\Local\\Programs\\Python\\python38\\lib','C:\\Users\\Lewis\\\AppData\\Local\\Programs\\Python\\python38','C:\\webcq\\venv','C:\\webcq\\venv\\lib\\site-packages']
Server time:    Mon,17 May 2021 21:27:15 +0000
Traceback Switch to copy-and-paste view
C:\webcq\venv\lib\site-packages\django\core\handlers\exception.py,line 47,in inner
                response = get_response(request) …
▶ Local vars
C:\webcq\venv\lib\site-packages\django\core\handlers\base.py,line 181,in _get_response
                response = wrapped_callback(request,*callback_args,**callback_kwargs) …
▶ Local vars
C:\webcq\materiais\views.py,line 49,in delete_mat
    return redirect('material') …
▶ Local vars

view.py 应用

from django.shortcuts import render,redirect
from materiais.models import EspecComponentes,Componente,Codigo,EspecMaterial
from materiais.forms import EspecComponentesForm



# Create your views here.

...

def create_mat(request):
    form_mat = EspecComponentesForm(request.POST or None)
    if form_mat.is_valid():
        form_mat.save()
        return redirect('material')

def view_mat(request,pk):
    data = {}
    data['db'] = EspecComponentes.objects.get(pk=pk)
    return render(request,'materiais/view.html',data)

def edit_mat(request,pk):
    data = {}
    data['db'] = EspecComponentes.objects.get(pk=pk)
    data['form_mat'] = EspecComponentesForm(instance=data['db'])
    return render(request,'materiais/form.html',data)

def update_mat(request,pk):
    data = {}
    data['db'] = EspecComponentes.objects.get(pk=pk)
    form_mat = EspecComponentesForm(request.POST or None,instance=data['db'])
    if form_mat.is_valid():
        form_mat.save()
        return redirect('material')

def delete_mat(request,pk):
    db = EspecComponentes.objects.get(pk=pk)
    db.delete()
    return redirect('material')

urls.py 应用

from django.contrib import admin
from django.urls import path
from . import views


app_name = 'materiais'

urlpatterns = [

  #ok  path('material/',views.material,name='material'),#ok path('form_mat/',views.form_mat,name='form_mat'),path('create_mat/',views.create_mat,name='create_mat'),path('view_mat/<int:pk>/',views.view_mat,name='view_mat'),path('edit_mat/<int:pk>/',views.edit_mat,name='edit_mat'),path('update_mat/<int:pk>/',views.update_mat,name='update_mat'),path('delete_mat/<int:pk>/',views.delete_mat,name='delete_mat'),]

视图工作,但不重定向到视图名称并返回错误noreverseMatch 在 /edit_mat/11/ noreverseMatch 在 /update_mat/11/ noreverseMatch 在 /delete_mat/11/

urls.py 项目

from django.urls import include,path
from imagem.views import home,form,create,view,projeto,edit,update,delete
from materiais.views import material,form_mat,create_mat,view_mat,edit_mat,update_mat,delete_mat


urlpatterns = [

 ... urls project... ok
    

    #App Materiais

    path('',include('materiais.urls',namespace='material')),path('form_mat/',namespace='form_mat')),namespace='create_mat')),namespace='view_mat')),namespace='edit_mat')),namespace='update_mat')),namespace='delete_mat')),]

form.html


          <tbody>

          {% for dbs in db %}

            <td>
               <th>{{dbs.id}}</th>
                <td>{{dbs.espec_name}}</td>
                <td>{{dbs.codigo}}</td>
                <td>{{dbs.espec_material}}</td>
                <td>{{dbs.diametro1}}</td>
                <td>{{dbs.diametro2}}</td>
                <td>{{dbs.peso}}</td>
                <td>
                      <a href="/view_mat/{{dbs.id}}/" class="btn btn-dark">Visualizar</a>
                      <a href="/edit_mat/{{dbs.id}}/" class="btn btn-primary">Editar</a>
                      <a href="/delete_mat/{{dbs.id}}/" class="btn btn-danger btnDel">Deletar</a>
                </td>
            </tr>
            {% endfor %}

          </tbody>

解决方法

您需要在视图中使用 redirect('material:material')。这是<app name>:<url namespace>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?