Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2017 13:41:30

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод в html

Пытаюсь сформировать вывод 2 страниц. Первая выводит список всех моделей определенного города, вторая - конкретную модель. При попытке вывода модели в html шаблоне появляется ошибка. При открытии страницы (используем ф-ию viewtrainers )по адресу site.ru/trainers/city все отрабатывает, появляется список участников. При открытии (используем функцию viewperson) по адресу site.ru/trainers/name получаю ошибку

DoesNotExist at /trainers/vasyuta-anton/
Cities matching query does not exist.
В traceback ругается на

trainers_town = Cities.objects.get(slug =  slug)
Исходники такие
urls.py

from django.conf.urls import url, include
from trainers.views import viewtrainers, viewperson

app_name = 'trainers'
urlpatterns = [
url(r'^(?P<slug>[-\w]+)/$', viewtrainers, name='viewtrainers'),
url(r'^(?P<slug>[-\w]+)/$', viewperson, name='viewperson'),
]
[b]views.py[/b]

from django.shortcuts import render
from trainers.models import Trainer, Cities

# Вывод списка всех участников привязанных к определенному городу

def viewtrainers(request, slug):
trainers_town = Cities.objects.get(slug = slug)
trainers = Trainer.objects.all()
return render(request, "trainers.html", {'trainers_town':trainers_town, 'trainers':trainers })

# Вывод конкретного участника

def viewperson(request, slug):
trainer = Trainer.objects.get(slug = slug)
return render(request, "trainer_person.html", {'trainer':trainer})
models.py

from django.db import models
from django.utils.text import slugify

class Cities(models.Model):
city = models.CharField(max_length=50, verbose_name="Город")
slug = models.SlugField(unique = True, default = '')

def __str__(self):
return self.city

class Trainer(models.Model):
city = models.ForeignKey('Cities', verbose_name="Город")
name = models.CharField(max_length=100, verbose_name="Ф.И.О")
slug = models.SlugField(unique = True, default = '')

def __str__(self):
return self.name

Офлайн

#2 Сен. 4, 2017 14:31:13

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод в html

lepiloff
Тут все понятно, у вас в БД нет записи с таким slug



Офлайн

#3 Сен. 4, 2017 15:54:30

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод в html

В базе присутствует, иначе в админке поле было бы пустым

Офлайн

#4 Сен. 4, 2017 16:15:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Вывод в html

lepiloff
Обложите код принтами, проверьте точно что там за slug приходит с клиента, ошибка очевидна и другого объяснения ей нет.



Офлайн

#5 Сен. 4, 2017 16:52:07

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод в html

В общем, проблема заключалась в том что при поиске подходящего регулярного выражения, поиск в urls.py шел сверху вниз и функция viewperson пыталась принять первый slug. Поменял вывод в urls.py на

url(r'^persons/(?P<slug>[-\w]+)/$', viewperson, name='viewperson')

и заработало

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version