2016-04-03 4 views
0

Я писал модельный интернет-магазин django app, хотел включить в него слизню. Возникли проблемы при открытии страницы. Это моя модель:Имея проблемы с slug

from __future__ import unicode_literals 
from django.db import models 
from django.db.models.signals import pre_save 
from django.utils .text import slugify 

class Customer(models.Model): 
    customer_name = models.CharField(max_length=200) 
    slug = models.SlugField(unique = True) 
    def __str__(self): 
     return self.customer_name 

    def get_absolute_url(self): 
     return reverse("OnlineShop:order", kwargs={"slug": self.slug}) 

def pre_save_customer_receiver(sender, instance, *args, **kwargs): 
    slug = slugify(instance.customer_name) 
    exists = Customer.objects.filter(slug = slug).exists() 
    if exists: 
     slug = "%s-%s" % (slug,instance.id) 
    instance.slug=slug 

pre_save.connect(pre_save_customer_receiver, sender = Customer) 

Это мое мнение:

def customer(request): 
    customer_list = Customer.objects.all() 
    template_path = 'OnlineShop/customer.html' 
    context={ 
     'customer_list':customer_list, 
    } 
    return render(request,template_path,context) 

def order(request,slug): 
    Customer = Customer.objects.filter(slug=slug) 
    ''' some code from here ''' 

И мой шаблон customer.html:

<h1>List of Customers:</h1> 
<ul> 
    {% for customer in customer_list %} 
     <li><a href='{% url 'order' customer.slug %}'>{{ customer.customer_name }}<br></li> 
    {% endfor %} 
</ul> 

NoReverseMatch at /OnlineShop/

Это мой urls.py

 from django.conf.urls import url 
     from . import views 

     urlpatterns=[ 
     url(r'^$',views.customer, name='customer'), 
     url(r'^customer/(?P<slug>[\w-]+)$',views.order, name='order'), 
     ] 

Является ли проблема в шаблоне? Что не так?

+0

Вы можете отредактировать свой вопрос с помощью 'urls.py'? –

ответ

0

Я надеюсь, что вы определили свой urls.py, как показано ниже,

from django.conf.urls import url, include 

from . import views 

onlineshop_patterns = [ 
    url(r'^$', views.customer, name='customer'), 
    url(r'^customer/(?P<slug>[\w-]+)$', views.order, name='order'), 
] 

urlpatterns = [ 
    # ... 
    url(r'^OnlineShop/', include(onlineshop_patterns)), 
    # ... 
] 

Read Reverse resolution of URLs и Regex for SlugField.

+0

Причина, по которой я спрашиваю о проблеме в шаблоне, заключается в том, что в шаблоне, когда я заменяю customer.slug на client.id, в этом случае по крайней мере view.customer успешно вызван. Там я не испытываю никаких проблем. В тот момент, когда у меня возникнет проблема customer.slug в шаблоне, проблема возникает. – Anirban

+0

Можете ли вы разместить образец пробки? –

+0

Хорошо, выяснил проблему, TY. Мне пришлось модифицировать регулярное выражение для slug в URL-адресе из (? P [\ w -] +) в (? P [\ w -] *) и небольшую модификацию в представлении заказа, код которого у меня есть " т. :) – Anirban