Я написал собственное промежуточное ПО в своем приложении django.В основном я добавил счетчик, который увеличивается каждый раз, когда сайт просматривается.Чтобы отфильтровать сайт администратора и настроить мои просмотры, я использую следующие основные условия:
Мой middleware.py
class GetUrlMiddleware():
def __init__(self, get_response):
self.get_response = get_response
# One-time configuration and initialization.
def __call__(self, request):
# Code to be executed for each request before
# the view (and later middleware) are called.
response = self.get_response(request)
if request.path.startswith('/admin/'):
pass
elif request.path == ('/jobs'):
Counter.objects.update(total_views=F('total_views')+1)
Counter.objects.update(job_list_site_views=F('job_list_site_views')+1)
elif request.path == ('/'):
Counter.objects.update(home_site_views=F('home_site_views')+1)
Counter.objects.update(total_views=F('total_views')+1)
elif request.path.startswith('/jobs/'):
Counter.objects.update(total_views=F('total_views')+1)
# Code to be executed for each request/response after
# the view is called.
return response
Вот мои URL:
urlpatterns = [
path('jobs', ListJobView.as_view(), name="list_jobs"),
path('jobs/<int:id>/', DetailJobView.as_view(), name="detail_jobs"),
path('jobs/new', CreateJobView.as_view(), name="create_job"),
path('jobs/update/<int:id>/', UpdateJobView.as_view(), name="update_job"),
path('jobs/delete/<int:id>/', DeleteJobView.as_view(), name="delete_job"),
]
Теперь это работает.Но я хотел бы сделать его немного более динамичным, поэтому я думал об использовании пространств имен url вместо жесткого кодирования пути.Но то, что я пробовал до сих пор, не работает.Также я не знаю, как я могу обусловить свой подробный вид, в котором я передаю идентификаторы.Есть ли способ сделать это?
Любая помощь приветствуется, спасибо заранее.