привет, я хочу создать разные страницы для мобильных и настольных компьютеров в django framkework Я пробовал все, значит, у меня есть учебник, в котором они делают это с промежуточным программным обеспечением с помощью слова «м», но я надел его без это, и он показывает мне правильный результат при печати, но не меняет каталог шаблона в setting.py проекта djang.
middleware.py
from django.conf import settings
from django.utils.deprecation import MiddlewareMixin
from user_agents.parsers import UserAgent
# from django_user_agents import
from django_user_agents.utils import get_user_agent
mob='N'
class MobileTemplatesMiddleware(object):
"""Determines which set of templates to use for a mobile site"""
ORIG_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
def __init__(self, next_layer=None):
"""We allow next_layer to be None because old-style middlewares
won't accept any argument.
"""
self.get_response = next_layer
# print(ORIG_TEMPLATE_DIRS)
#if obejct other that moddleaxin
# def __init__(self, get_response):
# self.get_response = get_response
#
# def __call__(self, request):
# return self.get_response(request)
def process_request(self, request):
print("fdafaffdahfajhadjhj")
# sets are used here, you can use other logic if you have an older version of Python
MOBILE_SUBDOMAINS = set(['m', 'mobile'])
domain = set(request.META.get('HTTP_HOST', '').split('.'))
user_agent = get_user_agent(request)
print(user_agent.is_mobile)
if user_agent.is_mobile:
# if UserAgent.is_mobile:
settings.TEMPLATE_DIRS = settings.MOBILE_TEMPLATE_DIRS + self.ORIG_TEMPLATE_DIRS
print("mobile view")
else:
settings.TEMPLATE_DIRS = settings.DESKTOP_TEMPLATE_DIRS + self.ORIG_TEMPLATE_DIRS
print("desktop viw")
settings.py
`
`
DIRNAME = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = (
'C:/Users/user/Desktop/main/service/edit/servify/templates/',
)
MOBILE_TEMPLATE_DIRS = (
os.path.join(DIRNAME, 'templates', 'mobile'),
)
DESKTOP_TEMPLATE_DIRS = (
os.path.join(DIRNAME, 'templates', 'desktop'),
)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': TEMPLATE_DIRS,
'APP_DIRS': True,
в печатном виде ответ правильный для мобильных устройств, это мобильный вид и для рабочего стола это вид рабочего стола, но в конце django .template.loaders.filesystem.Loader смотрит только на предоставленный по умолчанию C: \ Users \ user \ Desktop \ main \ service \ edit \ servify \ templates \ service \ main. html только