NoReverseMatch at / Reverse for 'singlepropa' 未找到参数 '('mens-shirt-1',)'尝试了 1 个模式

如何解决NoReverseMatch at / Reverse for 'singlepropa' 未找到参数 '('mens-shirt-1',)'尝试了 1 个模式

我试图将 html 标签中的 2 个参数传递给 django 中的 url。但我收到错误noreverseMatch。如果我只传递一个参数,那么它工作正常,但是每当我传递 2 个参数时就会产生错误。我已经阅读了这方面的文档,但我不清楚,我也搜索过这个问题。但没有任何效果。你能帮我弄清楚我该如何解决这个问题吗?

我在 html 标签中的 href 是:

<a href='{% url "update_cart" slug=product.slug qty=10 %}' class="float-right">Add to Cart</a>Add to Cart</a>

我的 urls.py 是:

    urlpatterns = [
    path('',home.Index.as_view(),name='homepage'),path('signup',signup.SignUp.as_view(),name="signup"),path('login',login.Login.as_view(),name="login"),path('logout',login.logout,name="logout"),path('basket',basket.Basket.as_view(),name="basket"),path('singlepropa/<str:slug>/<int:qty>',singlepropa.SinglePropa.as_view(),name="singlepropa"),path('s/',search.Search.as_view(),name="search"),path('update_cart/<str:slug>/<int:qty>',basket.update_cart,name="update_cart"),]

映射url的方法是:

from django.shortcuts import render,redirect,HttpResponseRedirect
from django.views import View
from MStore.models.cartModel import Cart,CartItem
from MStore.models.productModel import ProductModel
from django.urls import reverse

# login class
class Basket(View):

    def get(self,request):
        try:
            the_id = request.session["cart_id"]
        except:
            the_id = None
        if the_id:
            cart = Cart.objects.get(id=the_id)
            context = {'cart': cart}
        else:
            empty_msg = "Your Cart is empty. Please keep shopping!"
            context = {"empty": True,"empty_msg": empty_msg }

        return render(request,'basket.html',context)


def update_cart(request,slug,qty):
    try:
        the_id = request.session["cart_id"]
    except:
        new_cart = Cart()
        new_cart.save()
        the_id = new_cart.id
        request.session["cart_id"] = new_cart.id

    cart = Cart.objects.get(id=the_id)
    try:
        product = ProductModel.objects.get(slug=slug)
    except ProductModel.DoesNotExist:
        pass
    except:
        pass
    cart_item,created = CartItem.objects.get_or_create(cart=cart,product=product)
    if created:
        print("Yeah")

    if qty == 0:
        cart_item.delete()
    else:
        cart_item.quantity = qty
        cart_item.save()

    request.session["item_counts"] = cart.cartitem_set.count()

    new_total = 0.00
    for p in cart.cartitem_set.all():
        line_total = float(p.product.price) * p.quantity
        new_total += line_total

    cart.total = round(new_total,2)
    cart.save()
    return HttpResponseRedirect(reverse("basket"))

我得到的错误

    noreverseMatch at /
>     Reverse for 'singlepropa' with arguments '('mens-shirt-1',)' not found. 1 pattern(s) tried:
> ['singlepropa/(?P<slug>[^/]+)/(?P<qty>[0-9]+)$']
>     Request Method:   GET
>     Request URL:  http://127.0.0.1:8000/
>     Django Version:   3.1.5
>     Exception Type:   noreverseMatch
>     Exception Value:  
>     Reverse for 'singlepropa' with arguments '('mens-shirt-1',)' not found. 1 pattern(s) tried:
> ['singlepropa/(?P<slug>[^/]+)/(?P<qty>[0-9]+)$']
>     Exception Location:   G:\djangopro\EMart\venv\lib\site-packages\django\urls\resolvers.py,> line 685,in _reverse_with_prefix
>     Python Executable:    G:\djangopro\EMart\venv\Scripts\python.exe
>     Python Version:   3.7.3
>     Python Path:  
>     ['G:\\djangopro\\NShopping',>      'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\python37-32\\python37.zip',>      'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\python37-32\\DLLs',>      'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\python37-32\\lib',>      'C:\\Users\\User\\AppData\\Local\\Programs\\Python\\python37-32',>      'G:\\djangopro\\EMart\\venv',>      'G:\\djangopro\\EMart\\venv\\lib\\site-packages']
>     Server time:  Wed,10 Feb 2021 09:16:40 +0000

完整追溯:

G:\djangopro\EMart\venv\lib\site-packages\django\core\handlers\exception.py,line 47,in inner
                response = get_response(request) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\core\handlers\base.py,line 181,in _get_response
                response = wrapped_callback(request,*callback_args,**callback_kwargs) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\views\generic\base.py,line 70,in view
            return self.dispatch(request,*args,**kwargs) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\views\generic\base.py,line 98,in dispatch
        return handler(request,**kwargs) …
▶ Local vars
G:\djangopro\NShopping\MStore\views\home.py,line 24,in get
        return render(request,'index.html',data) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\shortcuts.py,line 19,in render
    content = loader.render_to_string(template_name,context,request,using=using) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\loader.py,line 62,in render_to_string
    return template.render(context,request) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\backends\django.py,line 61,in render
            return self.template.render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,line 170,in render
                    return self._render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,line 162,in _render
        return self.nodelist.render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,line 938,in render
                bit = node.render_annotated(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,line 905,in render_annotated
            return self.render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\loader_tags.py,line 150,in render
            return compiled_parent._render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,in render
                result = block.nodelist.render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,in render_annotated
            return self.render(context) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\defaulttags.py,line 211,in render
                    nodelist.append(node.render_annotated(context)) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\template\base.py,line 446,in render
            url = reverse(view_name,args=args,kwargs=kwargs,current_app=current_app) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\urls\base.py,line 87,in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view,prefix,**kwargs)) …
▶ Local vars
G:\djangopro\EMart\venv\lib\site-packages\django\urls\resolvers.py,line 685,in _reverse_with_prefix
        raise noreverseMatch(msg) 

解决方法

update_cart 只有 1 个参数产品 slug。问题出在 singlepropa 网址中。

<a href='{% url "update_cart" product.slug %}' class="float-right">Add to Cart</a>
<a href='{% url "singlepropa" product.slug 10 %}' class="float-right">Add to Cart</a>

这将解决您的问题。

https://docs.djangoproject.com/en/3.1/ref/templates/builtins/#url

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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元字符(。)和普通点?