Текущий путь не соответствует шаблонам url - Django

Я не могу заставить url перенаправить на один из шаблонов, определенных в файле маршрутизации url.

web.py

from django.urls import path
from django.contrib import admin

from heyurl import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('store', views.store, name='store'),
    path('/metrics/', views.get_month_metrics, name= 'metrics'),
]

views.py (Включает функцию, которая вызывается вместе с включенными библиотеками)

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import Url, Click

from django.core.validators import URLValidator, ValidationError
from heyurl.utils import db_services, helper
from django_user_agents.utils import get_user_agent
from django.template.defaulttags import register
from datetime import datetime


def get_month_metrics(request, url):
    today = datetime.now()
    ident = Url.objects.filter(short_url= url)
    ident = ident[0].id

# GETTING THE CLICKS THIS MONTH
clicks_this_month = Click.objects.filter(url=ident, created_at__year=today.year,
                                         created_at__month=today.month)

# TOTAL CLICKS PER BROWSER
safari = Click.objects.filter(url=ident, browser__contains='safari')
chrome = Click.objects.filter(url=ident, browser__contains='chrome')
firefox = Click.objects.filter(url=ident, browser__contains='firefox')


# TOTAL CLICKS PER PLATFORM
mobile = Click.objects.filter(url=ident, platform='Mobile')
pc = Click.objects.filter(url=ident, platform='PC')

#CONTEXT TO DISPLAY ON DATA PANEL
context = {
    'url': url,
    'clicks': len(clicks_this_month),
    'safari': len(safari),
    'chrome': len(chrome),
    'firefox': len(firefox),
    'mobile': len(mobile),
    'pc': len(pc),
}

return render(request, 'heyurl/metrics.html', context)

Теперь я попробовал жесткое кодирование и поставил точный шаблон, который, по его словам, отсутствует, изменив web.py следующим образом

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('store', views.store, name='store'),
    path('RQvw4/metrics/', views.get_month_metrics, name= 'metrics'),
]

и это дает мне следующую ошибку error after hardcoding url

Удалите аргумент url из get_month_metrics() и получите доступ к url, используя request.path. Это должно выглядеть следующим образом:

def get_month_metrics(request):
    url = request.path
    # rest of your code

Я думаю, что вы ожидаете получить RQvw4 как url - поэтому вы должны определить путь с параметром <url> как

path('<url>/metrics/', ...)

Затем следует сохранить url в функции

def get_month_metrics(request, url):

EDIT:

Если вы жестко кодируете

path('RQvw4/metrics/',...)

то она не знает, что вы хотите присвоить RQvw4 значение url.
Потребуется жестко закодировать это значение и в функции

def get_month_metrics(request, url="RQvw4"):

Но он все равно должен использовать path('<url>/metrics/', ...) для других ссылок.

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