Django: Странная ошибка при соединении между представлением, шаблоном и url

У меня есть две страницы main usage и main model, на которых перечислены продукты определенного использования или модели. У меня есть следующие представления для этих страниц:

def get_common_queryset():
    usage_queryset = Usage.objects.all()
    sub_usage_queryset = SubUsage.objects.all()
    main_model_queryset = MainModel.objects.all()
    pump_type_queryset = PumpType.objects.all()
    queryset_dictionary = {
        "usage_queryset": usage_queryset,
        "sub_usage_queryset": sub_usage_queryset,
        "main_model_queryset": main_model_queryset,
        "pump_type_queryset": pump_type_queryset,
    }
    return queryset_dictionary


def products_usage_main(request):
    queryset_dictionary = get_common_queryset()
    context = queryset_dictionary
    return render(request, "products/products_usage_main.html", context)


def products_model_main(request):
    queryset_dictionary = get_common_queryset()
    context = queryset_dictionary
    return render(request, "products/products_model_main.html", context)

Здесь у нас есть функция get_common_queryset(), о причине которой вы можете прочитать в этом вопросе. Затем у нас есть две похожие функции представления, products_usage_main и product_model_main, но с разными шаблонами.

В urls.py у меня есть следующие пути для этих представлений:

urlpatterns = [
    path("application/", products_usage_main, name="products_usage_main"),
    path("model/", products_model_main, name="products_model_main"),
]

И снова мы видим, что два пути похожи, просто с разными взглядами.

Наконец, у меня есть два отдельных шаблона для этих двух представлений, код которых не нужен и не связан с проблемой, с которой я столкнулся.

ПРОБЛЕМА:

На боковой панели моей страницы продуктов у меня есть две основные ссылки /products/application/ и /products/model/, и когда я нажимаю на /products/application/, все работает просто отлично, но когда нажимается /products/model/, я получаю следующую ошибку:

ValidationError at /products/model/
['“model” is not a valid UUID.']

Когда я проверил ошибку трассировки, он сказал, что проблема возникла из product_detail представления и в строке product = Product.objects.get(id=pk), которая не имеет НИКАКОГО отношения к этим двум страницам и их представлениям! Ниже приведен мой вид product_detail:

def product_detail(request, pk):
    product = Product.objects.get(id=pk)
    head_flow_dataset = HeadFlowDataSet.objects.filter(
        product=product
    ).order_by("flow")
    context_of_view = {
        "product": product,
        "head_flow_dataset_x": [],
        "head_flow_dataset_y": [],
    }
    for head_flow in head_flow_dataset:
        context_of_view["head_flow_dataset_x"].append(head_flow.flow)
        context_of_view["head_flow_dataset_y"].append(head_flow.head)
    queryset_dictionary = get_common_queryset()
    context = {
        **context_of_view,
        **queryset_dictionary,
    }
    return render(request, "products/product_detail.html", context)

Ниже я отправляю полный отслеживание ошибки, если вам это нужно:

Для решения этой проблемы я пересмотрел другие свои взгляды, особенно взгляд product_detail, и попытался понять, почему именно этот взгляд должен быть источником этой проблемы.

В моем products/urls.py у меня был путь к product_detail виду, который выглядел следующим образом:

    path("<str:pk>/", product_detail, name="product_detail"),

С другой стороны model page url, как упоминалось выше, был следующим:

    path("model/", products_model_main, name="products_model_main"),

Так что я предполагаю, что сходство между этими двумя путями было источником проблемы, и когда я изменил url пути product_detal на path("product-detail/<str:pk>/, обе страницы работали просто отлично.

Вернуться на верх