您使用的namespace是订单应用的网址。您必须将其提供namespace给url标记。
{% url ’orders:basket_adding’ %}# ____/ ___________/# | |# namespace url name解决方法
NoReverseMatch位于/ product / pussyes /
找不到’basket_adding’的相反内容。’basket_adding’不是有效的视图函数或模式名称。
请求方法:GET请求URL: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,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,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’这是我的模板,位于URL basket_adding
<form action='{% url ’basket_adding’ %}'> {% csrf_token %} <label>Quantity</label> <select ><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 type='submit' >Add to Cart</button> <p 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= newpricenewcount++;$('.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'); },});