Vladimir_Levadnij
@Vladimir_Levadnij
Генеральный разнорабочий Текнокомо

Как объединить в одном URL вывод по ID и по SLUG?

Здравствуйте. Используется Python 3.6.2 / Django 1.11.5

Нужно, чтобы можно было перейти на страницу как по ссылке типа /id1, так и по слагу типа /kosmos

Сделал, работает, но есть ощущение, что это можно сделать как-то лучше / правильнее / красивее. Подскажите пожалуйста, можно ли ниже написанное сжать / скомпоновать / улучшить?

В urls.py

url(r'^id(?P<projekto_id>[0-9]+)/$', muro_views.sociaprojekto, name='muro_sociaprojekto'),
url(r'^(?P<projekto_slug>[\w-]+)/$', muro_views.sociaprojekto_slug, name='sociaprojekto_slug'),


Во views.py

def sociaprojekto(request, projekto_id):

    sociaprojekto = get_object_or_404(KomunumojSociaprojekto, id=projekto_id)

    return render(request, 'muroj/muro_sociaprojekto.html', {'sociaprojekto': sociaprojekto,})


def sociaprojekto_slugo(request, projekto_slug):

    sociaprojekto = get_object_or_404(KomunumojSociaprojekto, slug__slug=projekto_slug)

    return render(request, 'muroj/muro_sociaprojekto.html', {'sociaprojekto': sociaprojekto,})


slug__slug - это потому, что используется отдельная модель / таблица для слагов.
  • Вопрос задан
  • 411 просмотров
Пригласить эксперта
Ответы на вопрос 2
sim3x
@sim3x
Premature optimisation

А вот slug__slug - ето проблема
Ответ написан
tema_sun
@tema_sun
В таком случае у вас будут страницы дублироваться по разным адресам. Если ничего не поменялось, то поисковики это не любят. Нужно выбрать какой-то один основной способ, например по слагу, а с другого варианта редиректить на основной.
p.s. Кстати, вы уверены, что слаг никогда не будет состоять из только из цифр?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы