Как сделать URL в промежуточном программном обеспечении django более динамичным при использовании get.path - PullRequest
0 голосов
/ 20 апреля 2019

Я написал собственное промежуточное ПО в своем приложении 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 вместо жесткого кодирования пути.Но то, что я пробовал до сих пор, не работает.Также я не знаю, как я могу обусловить свой подробный вид, в котором я передаю идентификаторы.Есть ли способ сделать это?

Любая помощь приветствуется, спасибо заранее.

...