Да , хотя не все ответы являются ответами HTTP, и не все ответы HTTP имеют как таковые заголовок.Но мы можем сделать все возможное, чтобы получить заголовок из ответа.
Для этого мы можем использовать скребок HTML, например beautifulsoup4
[зычный] .Вам может потребоваться установить:
pip install <b>beautifulsoup4 lxml</b>
Затем мы можем получить заголовок из ответа с помощью:
from bs4 import BeautifulSoup
def get_response_title(response):
try:
soup = BeautifulSoup(response.content, 'lxml')
return soup.<b>find('title').getText()</b>
except AttributeError:
return None
Таким образом, вы можете использовать это в промежуточном программном обеспечении, например:
class AccessLogs(object):
def __call__(self, request):
response = self.get_response(request)
if '/media/' not in request.path:
try:
<b>title = get_response_title(response)</b>
ActivityLog(user=request.user, <b>title=title</b>, pageURL=request.path).save()
except Exception as e:
print(e)
При этом, как говорит @ IainShelvington , это замедлит обработку, так как мы каждый раз посмотрим на ответ.Некоторые фреймворки веб-разработки, такие как Yesod [yesodweb.com] устанавливают заголовок как переменную, передаваемую в обработчик, и, таким образом, делают его более удобным для обнаружения.