/product/pussyes/ 的 NoReverseMatch 未找到“basket_adding”的反向。 “basket_adding”不是有效的视图函数或模式名称

Posted

技术标签:

【中文标题】/product/pussyes/ 的 NoReverseMatch 未找到“basket_adding”的反向。 “basket_adding”不是有效的视图函数或模式名称【英文标题】:NoReverseMatch at /product/pussyes/ Reverse for 'basket_adding' not found. 'basket_adding' is not a valid view function or pattern name 【发布时间】:2017-09-13 04:23:05 【问题描述】:

NoReverseMatch 在 /product/pussyes/

未找到“basket_adding”的反向。 “basket_adding”不是有效的视图函数或模式名称。

请求方法:GET 请求网址:http://127.0.0.1:8000/product/pussyes/ Django 版本:1.11 异常类型:NoReverseMatch 异常值:

未找到“basket_adding”的反向。 “basket_adding”不是有效的视图函数或模式名称。

ajax 和 jquery 的错误

这是我在文件夹订单中的网址

url(r'^basket_adding/$', basket_adding, name="basket_adding"),

这是我的产品views.py

def product_view(request, slug=None):
    instance                        = get_object_or_404(Product, slug=slug)
    title                           = instance.name
    session_key                     = request.session.session_key
    if not session_key:
        request.session.cycle_key()
    forms                           = SubscribersForm(request.POST or None)
    if forms.is_valid():
        instance                    = forms.save(commit=False)
        instance.save()
        return redirect("/")
    context = 
                "instance": instance,
                "title": title,
                "forms": forms,
    
    return render(request, 'product.html', context)

这是我的views.py订单

def basket_adding(request):
    return_dict                     = 
    session_key                     = request.session.session_key
    data                            = request.POST
    product_id                      = data.get('product_id')
    product_price                   = data.get('product_price')

    new_product                     = ProducInBasket.objects.get(session_key=session_key, product_id=product_id, product_price=product_price, quantity=quantity)
    return JsonResponse(return_dict)

这是我的订单模型

class ProducInBasket(models.Model):
    session_key                         = models.CharField(max_length=128, default=None)
    order                               = models.ForeignKey(Order, blank=True, null=True, default=None)
    product                             = models.ForeignKey(Product, blank=True, null=True, default=None)
    count_of_goods                      = models.IntegerField(default=1)
    price_per_item                      = models.DecimalField(max_digits=10, decimal_places=2, default=0)
    total_price                         = models.DecimalField(max_digits=19, decimal_places=2, default=0)
    is_active                           = models.BooleanField(default=True)
    publish                             = models.DateField(auto_now=False, auto_now_add=True)
    timestamp                           = models.DateTimeField(auto_now=False, auto_now_add=True)


    def __str__(self):
        return "0:|:1".format(self.price_per_item,self.order) 

    class Meta:
        ordering = ["-timestamp"]
        verbose_name = 'Product in Basket'
        verbose_name_plural = 'Products in Basket'

这是我的模板,网址为 basket_adding

<form class="form-group formselect" action="% url 'basket_adding' %"> % csrf_token %
                    <label>Quantity</label>
                      <select class="form-control litlwidth" id="sel1" >
                        <option value="1">1</option>
                        <option value="2">2</option>
                        <option value="3">3</option>
                        <option value="4">4</option>
                        <option value="5">5</option>
                        <option value="6">6</option>
                        <option value="7">7</option>
                        <option value="8">8</option>
                        <option value="9">9</option>
                        <option value="10">10</option>
                      </select>
                    <br>
                    <button id="submit_btn" class="cartadd morewidth"  title="Add to Cart" type="submit" >Add to Cart</button>
                    <p class="info hidden" data-product_id=" instance.id " data-product_name=" instance.name " data-product_price=" instance.price "></p>

                </form>

这是带有 ajax 的 jquery 代码

$(document).ready(function() 

    var newcount                = 0;
    var allprice                = 0;
    var btnn                    = $("#submit_btn");
    var form                    = $(".formselect");
        form.on('submit', function(e) 
        e.preventDefault();
        var product_id          = $(".info").data("product_id");
        var product_name        = $(".info").data("product_name");
        var price               = $(".info").data("product_price");
        var quantity            = $("#sel1").val();
        var full_price_per_item = (price * quantity)
        newprice                = allprice + (price * quantity );
        allprice                = newprice
        newcount++;
        $(".count").html(newcount);
        $("#price").html(newprice);


        ////////////////////////////////////////////////
        var data                = ;
        /////////////////////////////

        data.product_id         = product_id;
        data.product_name       = product_name;
        data.product_price      = price;
        data.product_quantity   = quantity;
        data.product_newprice   = newprice;
        data.product_newcount   = newcount;
        data.product_allprice   = allprice;

        /////////////////////////////


        var csrf_token          = $('.formselect [name="csrfmiddlewaretoken"]').val();
        data["csrfmiddlewaretoken"] = csrf_token;
        var url                 = form.attr("action");
        console.log(data)
        $.ajax(
            url: url,
            type: 'POST',
            data: data,
            cache: true,
            success: function(data)
                console.log("OK");
            ,
            error: function()
                console.log("ERROR");

            ,
        );

【问题讨论】:

您是否在主 urls.py 中使用namespace 作为您的订单网址? url(r'^orders/', include("orders.urls", namespace='orders')), in main url have this )) url(r'^orders/', include("orders.urls", namespace='orders')), 【参考方案1】:

您正在使用namespace 作为您的订单应用的 URL。您必须将其 namespace 提供给 url 标签。

% url 'orders:basket_adding' %
#       \____/ \___________/
#         |          |
#     namespace   url name

【讨论】:

以上是关于/product/pussyes/ 的 NoReverseMatch 未找到“basket_adding”的反向。 “basket_adding”不是有效的视图函数或模式名称的主要内容,如果未能解决你的问题,请参考以下文章

使用 get_absolute_url() 的 NoReverseMatch 错误

关于光的反射和折射的例子?

既是3的倍数又是5的倍数都有哪些

一个三位数既是3的倍数,又是5的倍数。这样的三位数最小是啥

数组的创建,及数组的方法

cnn中的步长的目的和重要性是啥