Отображение разных страниц в режиме просмотра на мобильных устройствах и на ПК в django - PullRequest
0 голосов
/ 18 июня 2020

привет, я хочу создать разные страницы для мобильных и настольных компьютеров в 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 только

...