/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”不是有效的视图函数或模式名称的主要内容,如果未能解决你的问题,请参考以下文章