Как сделать несколько урлов в django?
Изучаю django, не могу создать многопоточный url
Как отобразить, например, марку автомобиля audi по url 127.0.0.1:8000/cars_brand/audi/Audi_TTS
?
Теперь он говорит None
Я не знаю, что еще добавить, но stackoverflow не пропускает мой вопрос по причине: It looks like your post is mostly code; please add some more details.
просмотров
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
cars_brand_dict = {
"audi": ["Audi_RS_2_Avant", "Audi_A8_W12", "Audi_TTS"],
"bmw": ["BMW_M135i_xDrive", "BMW_M240i_xDrive_Coupe", "BMW_M3_Competition"],
"volkswagen": ["Volkswagen_Caddy","Volkswagen_Multivan","Volkswagen_Crafter_Pritsche"],
}
cars_model_dict = {
"audi_dict" :{
"Audi_RS_2_Avant": "ссылочка Audi_RS_2_Avant",
"Audi_A8_W12": "ссылочка на Audi_A8_W12",
"Audi_TTS": "ссылочка на Audi_TTS",
},
"bmw_dict" :{
"BMW_M135i_xDrive": "ссылочка на BMW_M135i_xDrive",
"BMW_M240i_xDrive_Coupe": "ссылочка на BMW_M240i_xDrive_Coupe",
"BMW_M3_Competition": "ссылочка на BMW_M3_Competition",
},
"volkswagen_dict" :{
"Volkswagen_Caddy": "ссылочка на Volkswagen_Caddy",
"Volkswagen_Multivan": "ссылочка на Volkswagen_Multivan",
"Volkswagen_Crafter_Pritsche": "ссылочка на Volkswagen_Crafter_Pritsche",
}
}
def get_info_about_car_brand(request, car_brand):
description = cars_brand_dict.get(car_brand, None)
return HttpResponse(description)
def get_info_about_car_model(request, car_brand, car_model):
description = cars_model_dict.get(car_model)
return HttpResponse(description)
урлы по умолчанию
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('cars_brand/', include("car_store.urls")),
]
мои урлы
from django.urls import path
from . import views
urlpatterns = [
# path('', admin.site.urls),
path('<car_brand>', views.get_info_about_car_brand),
path('<car_brand>/<car_model>', views.get_info_about_car_model),
]
Просто добавьте slug <slug:{argument_name}>
к URL, это всегда работает
А если вы поставите car_model=None
в аргументах представления, вы можете указать оба URL на одно и то же представление:
urlpatterns = [
# path('', admin.site.urls),
path('<slug:car_brand>', views.get_info_about_car),
path('<slug:car_brand>/<slug:car_model>', views.get_info_about_car),
]
def get_info_about_car(request, car_brand, car_model=None):
print('request', request)
print('car_brand', car_brand)
print('car_model', car_model)
if car_model:
description = cars_model_dict.get(car_model)
else:
description = cars_brand_dict.get(car_brand, None)
return HttpResponse(description)