Получение шаблона для мобильного или настольного компьютера с помощью промежуточного ПО django [duplicate]
У меня есть этот фрагмент кода, который определяет, идет ли запрос с мобильного или с настольного компьютера https://stackoverflow.com/a/42280964/492293
import re
def mobile(request):
"""Return True if the request comes from a mobile device."""
MOBILE_AGENT_RE=re.compile(r".*(iphone|mobile|androidtouch)",re.IGNORECASE)
if MOBILE_AGENT_RE.match(request.META['HTTP_USER_AGENT']):
return True
else:
return False
def myfunction(request):
...
if mobile(request):
is_mobile = True
else:
is_mobile = False
context = {
... ,
'is_mobile': is_mobile,
}
return render(request, 'mytemplate.html', context)
В моем случае у меня есть два одинаково названных шаблона services.html
, например, в этом представлении
from django.http import HttpResponse
from django.template import loader
def index(request):
template = loader.get_template('services.html')
return HttpResponse(template.render())
В моих каталогах есть mobile/services.html
и desktop/services.html
Я хотел бы показывать мобильный шаблон, если запрос поступает с мобильного устройства, и другой шаблон, если запрос поступает с настольного компьютера.
Я посмотрел на это промежуточное ПО django https://docs.djangoproject.com/en/4.0/topics/http/middleware/#process-view
, который запускается до того, как django вызовет представление. Как я могу добавить функциональность к нему, чтобы сказать django, что нужно сделать префикс mobile или desktop к loader.get_template('services.html')
на основе обнаруженного отправителя запроса (web или desktop)?