मोबाइल और डेस्कटॉप के लिए Django WebApp [बंद] - पायथन, django, मोबाइल, django-टेम्पलेट्स

मैंने django के साथ वेब-ऐप बनाया जो डेस्कटॉप ब्राउज़र पर पूरी तरह से अच्छा दिख रहा है लेकिन मोबाइल ब्राउज़र में कुछ पेज पूरी तरह से नहीं दिख रहे हैं। मेरी टेम्पलेट निर्देशिका है myproject/template/ मैं मोबाइल ब्राउज़र के लिए नए टेम्पलेट बनाना चाहता हूं myproject/template_mobile/ और जब भी वेब पेज मोबाइल के माध्यम से एक्सेस करते हैं तो इसे रीडायरेक्ट किया जाता है myproject/template_mobile/ टेम्पलेट यह के माध्यम से चला जाता है myproject/template/। क्या इसे बनाने का कोई तरीका है setting.py या से decoratesमैं पूरे विचारों और पुराने टेम्पलेट्स को बदलना नहीं चाहता हूं।

अग्रिम में धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 4

अंततः मुझे समाधान मिला: मैं उपयोग करता हूं Django-मोबाइल इसके लिए, में बदलें settings.py आवश्यकता के अनुसार और एक बनाया middleware.py इसके लिए।

settings.py:(first follow `django-mobile`)

DESKTOP_TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, "templates"),)
MOBILE_TEMPLATE_DIRS = (os.path.join(PROJECT_ROOT, "templates/mobile"),)

फिर बनाएँ middleware.py

middleware.py
from django.conf import settings

class MobileTemplatesMiddleware(object):
"""Determines which set of templates to use for a mobile site"""

def process_request(self, request):
# 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("."))
if request.flavour=="mobile":
settings.TEMPLATE_DIRS = settings.MOBILE_TEMPLATE_DIRS
else:
settings.TEMPLATE_DIRS = settings.DESKTOP_TEMPLATE_DIRS

उत्तर № 2 के लिए 1

इस समस्या को हल करने के कुछ तरीके हैं। सबसे पहले डिवाइस जानकारी को अंदर और फिर प्राप्त करने का तरीका ढूंढना है

from django.shortcuts import render

def foo_view(request):
data = Model.objects.all()
my_template = "template.html"
"""
your logic for device_info
"""
if device_info == "mobile"
my_template="mobile_template.html"
return render(request, my_template, {"data": data})

अन्य तरीकों का उपयोग करना है Django संवेदनशील और इस मामले में आपके पास बेस टेम्पलेट के अंदर device_info हो सकता है, इसलिए इस मामले में आप यह कर सकते हैं:

{% if device_info.type == "phone" %}
{% include "templates/mobile_template.html" %}
{% else %}
{% include "templates/template.html" %}
{% endif %}

तीसरा तरीका है अपने एचटीएमएल / सीएसएस कोड को फिर से लिखना और फाउंडेशन या ट्विटर बूटस्ट्रैप जैसे कुछ उत्तरदायी सीएसएस ढांचे का उपयोग करना

आशा करता हूँ की ये काम करेगा


संबंधित सवाल
सबसे लोकप्रिय