2016-11-16 2 views
0

Я пытаюсь создать CRUD проект в Django. Я успешно связался с базой данных в MS SQL SERVER, также успешно выполнил миграцию с моей моделью. Теперь, когда я пытался я показать список данных в веб-страницы У меня есть следующий ОШИБКА:uniqueidentifier как аргумент в url | django

NoReverseMatch

реверса 'extraction_edit' с аргументами '(' A4A49247-B940-450C-8E1E-2F8148CB0933 ',)' и аргументы ключевого слова '{}' не найдены. 1 образец (ы) попытался: ['crud/edit/(?P<pk>\\d+)$']

и показывает, что что-то неправильно в моем шаблоне:

<a href="{% url 'crud:extraction_edit' extraction.id_extraction %}">edit</a> 
<a href="{% url 'crud:extraction_delete' extraction.id_extraction %}">delete</a> 

Может кто-то помочь мне решить эту проблему ?!

urls.py

urlpatterns = (
    url(r'^edit/(?P<pk>\d+)$', views.ExtractionUpdate.as_view(), name='extraction_edit'), 
    url(r'^delete/(?P<pk>\d+)$', views.ExtractionDelete.as_view(), name='extraction_delete'), 
) 

extraction_list.html

<h1>Extractions list</h1> 
    <ul> 
     {% for extraction in object_list %} 
      <li>ExtractionID-{{ extraction.id_extraction }} Date-{{ extraction.name_extraction }} 
       <a href="{% url 'crud:extraction_edit' extraction.id_extraction %}">edit</a> 
       <a href="{% url 'crud:extraction_delete' extraction.id_extraction %}">delete</a> 
      </li> 
     {% endfor %} 
    </ul> 

    <a href="{% url 'crud:extraction_new' %}">New</a> 

models.py

class Extraction(models.Model): 
    id_extraction = models.CharField(db_column='ID_Extraction', max_length=36, primary_key=True) 
    name_extraction = models.CharField(db_column='Name_Extraction', max_length=150, blank=True, null=True) 

    class Meta: 
     managed = False 
     db_table = 'Extraction' 

EDIT:

model.py

def get_edit_url(self): 
    return reverse('extraction_edit', kwargs={'pk': self.id_extraction}) 

urls.py

<a href="{% url 'crud:extraction_edit' extraction.get_edit_url %}">EDIT</a> 

ответ

1

В вашем URLPATTERN extraction_edit у вас есть один аргумент ключевое слово рк. Но вы не указали его в своем шаблоне. Вместо

<a href="{% url 'crud:extraction_edit' extraction.id_extraction %}">edit</a> 

переписывают HREF атрибута, как это:

<a href="{% url 'crud:extraction_edit' pk=extraction.id_extraction %}">edit</a> 

Цитата Джанго doc:

именованные аргументы состоят из любых названных групп соответствующих регулярному выражению, будет аннулировано любые аргументы, указанные в необязательном аргументе kwargs для django.conf.urls.url().

+0

Ну, я переписываю, как вы сказали, но, к сожалению, у меня такая же ошибка, только с небольшими различиями. Django.urls.exceptions.NoReverseMatch: Reverse для 'extract_edit' с аргументами '()' и ключевыми словами '{' pk ':' A4A49247-B940-450C-8E1E-2F8148CB0933 '}' не найден. 1 образец (ы): ['crud/edit/(? P \\ d +) $'] –

+0

Кстати, я мог иметь ту же ошибку при использовании кода в части редактирования моего сообщения. Можете ли вы проверить почту снова? Я думаю, что проблема здесь 'edit/(? P \ d +) $' my pk is uniqueidentifier здесь, как вы видите. –

+1

@NurzhanNogerbek пытается изменить регулярное выражение в вашем шаблоне: вместо '\ d +' использовать '[a-zA-Z0-9 _ \ -] +'. – neverwalkaloner

Смежные вопросы