Необязательные параметры Django с методом Django Path
Я пытаюсь вызвать один и тот же метод с несколькими URL (один без параметра). Когда я вызываю функцию, она вызывается несколько раз с параметром pk=None. Есть ли способ исправить это или почему нужно использовать необязательный параметр с методом path в Django
Здесь я предоставляю свой код
Urls.py
path('category/<str:pk>/', CategoryView.as_view(), name="category"),
path('category/', CategoryView.as_view(), name="category"),
views.py
class CategoryView(View):
TEMPLATES_NAME = 'home/category.html'
def get(self, request,pk=None):
base_category = BaseCategory.objects.filter(is_active=True)
category_list = Category.objects.filter(is_active=True)
if pk is not None:
slug=pk
if BaseCategory.objects.filter(slug=slug, is_active=True).exists():
return render(request,self.TEMPLATES_NAME,{'base_category':base_category,'category_list':category_list ,'slug':slug})
else:
raise PermissionDenied()
return render(request,self.TEMPLATES_NAME,{'base_category':base_category,'category_list':category_list})
def post(self, request):
return render(request,self.TEMPLATES_NAME)
logs
Forbidden (Permission denied): /category/null/
Traceback (most recent call last):
File "/home/hrishi/.virtualenvs/orgved/lib/python3.10/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/home/hrishi/.virtualenvs/orgved/lib/python3.10/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/hrishi/.virtualenvs/orgved/lib/python3.10/site-packages/django/views/generic/base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/home/hrishi/.virtualenvs/orgved/lib/python3.10/site-packages/django/views/generic/base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "/home/hrishi/Desktop/Django Projects/orgved/apps/home/views.py", line 95, in get
raise PermissionDenied()
django.core.exceptions.PermissionDenied
[16/Dec/2021 16:03:41] "GET /category/null/ HTTP/1.1" 200 3368
[16/Dec/2021 16:03:41] "GET /category/ HTTP/1.1" 200 35368
Проблема в вашем случае заключается в том, что вы пытаетесь получить доступ к url /category/null
.
В этом случае колба присваивает строку 'null' пк, поэтому pk is not None
удовлетворяется.
Просто используйте url /category/
, который будет работать нормально, а pk получит значение None