#python #django #middleware
#python #django #промежуточное программное обеспечение
Вопрос:
Допустим, у меня есть несколько URL-адресов:
urlpatterns = [
path('', Home.as_view()),
path('games/', include('games.urls', namespace='games')),
]
Есть ли способ заставить данное промежуточное программное обеспечение запускаться только при доступе к URL games
-адресам? Например, для проверки подлинности или предварительной выборки некоторых данных, которые будут полезны для всех представлений в games
приложении.
Ответ №1:
Вы можете проверить, принадлежит ли текущий запрос games
пространству имен, используя ResolverMatch
:
def simple_middleware(get_response):
# One-time configuration and initialization.
def middleware(request):
# Code to be executed for each request before
# the view (and later middleware) are called.
if 'games' in request.resolver_match.namespaces:
# Some additional logic here
pass
response = get_response(request)
# Code to be executed for each request/response after
# the view is called.
return response
return middleware
Комментарии:
1. Привет, я нашел это полезным, но просто хотел отметить, что я нашел этот запрос.resolver_match недоступен до тех пор, пока не будет выполнен вызов get_response