Динамические параметры url в Django
Я пытаюсь сделать пример для страницы продукта, где люди могут поместить дизайн на свой продукт. Я использую django и пытаюсь заставить мою страницу "дизайнера" вести себя по-разному в зависимости от типа выбранного продукта.
Я хочу, чтобы он вел себя как www.mysite.com/designer/foo. где foo - название продукта
Я добился того, что это работает как www.mysite.com/designer?product=foo. но мне больше нравится простота первого url, и я не могу представить, что это невозможно.
urlpatterns = [
path('', overview, name='overview'),
path('designer/', designer, name='designer'),
path('administration/', administration, name='administration'),
path('admin/', admin.site.urls),
]
мои шаблоны url выглядят так, я пробовал возиться с некоторыми примерами, используя regex за "/" после дизайнера. но я не могу заставить его работать, сервер продолжает бросать
Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:8000/designer/exampleA
Боюсь, я не знаю, с чего начать поиски и как правильно сформулировать свой вопрос, так как веб-разработка для меня совсем новое занятие.
Вы можете указать шаблон <str:designer>
, где мы используем конвертер путей <str:…>
[Django-doc]:
urlpatterns = [
path('', overview, name='overview'),
path('designer/<str:designer>/', designer, name='designer'),
path('administration/', administration, name='administration'),
path('admin/', admin.site.urls),
]
Тогда ваша функция представления designer
должна принимать designer
в качестве параметра и обрабатывать это, так:
def designer(request, designer):
# …
Здесь designer
находится строка , so this will be *
'foo'`* если вы посетите /designer/foo/
.
urls.py
urlpatterns = [
path('', overview, name='overview'),
path('designer/<str:no>', designer, name='designer'),
path('administration/', administration, name='administration'),
path('admin/', admin.site.urls),
]
views.py
def designer(request, no):
....
Django Dynamic URL Patterns
Возможность захвата одного или нескольких значений из заданного URL во время HTTP-запроса - важная возможность, которую Django предлагает разработчикам. Мы уже немного рассказывали о том, как работает маршрутизация в Django, но в тех примерах использовались жестко закодированные шаблоны URL. Хотя это и работает, но не масштабируется. Рассмотрим веб-сайт, который имеет тысячи страниц. Вам не обязательно нужны тысячи маршрутов для обслуживания этих страниц, но вам нужна возможность получать переменные из URL, чтобы один шаблон маршрутизации мог обрабатывать множество различных страниц. В этом уроке мы немного больше узнаем о динамических шаблонах URL и значениях в Django.
Угловые скобки < > Для захвата значения в шаблоне URL можно использовать угловые скобки. Ниже мы видим жестко закодированные шаблоны URL из предыдущего урока, и то, как мы можем переписать три маршрута в один с помощью угловых скобок.