2016-01-29 5 views
7

क्या कोई Django डेवलपर्स एएमपी-एचटीएमएल पृष्ठों को बनाने पर काम कर रहे हैं?django में त्वरित मोबाइल पेज?

(संदर्भ के लिए: Google AMP-project)

अगर मैं इसे सही ढंग से समझते हैं, जिस तरह से एएमपी-एचटीएमएल काम करता है आप प्रत्येक पृष्ठ के लिए 2 अलग फ़ाइलों को बनाने, है। सामान्य HTML परिणाम, साथ ही एक नई एएमपी-एचटीएमएल फ़ाइल। एएमपी-एचटीएमएल फ़ाइल सामान्य HTML पृष्ठ का एक स्लिम-डाउन संस्करण है, और इसका उपयोग Google द्वारा त्वरित मोबाइल पेज (इसलिए नाम, "त्वरित मोबाइल पेज") वापस करने के लिए किया जाता है। इन फ़ाइलों में से प्रत्येक एक दूसरे के सिर में एक टैग में संदर्भित करता है, जो Google को मोबाइल परिणामों के लिए एएमपी फ़ाइल का उपयोग करने के लिए कहता है।

Django ढांचे के भीतर, मैं सोच रहा हूं कि सामग्री के उसी सेट के आधार पर 2 अलग-अलग फ़ाइलों को कैसे बनाया जाए।

एक ही संदर्भ का उपयोग करना संभव हो सकता है जिसे दो HTML परिणामों के साथ पारित किया जा सकता है? एक परिणाम सामान्य HTML पृष्ठ है, दूसरा एक एएमपी-एचटीएमएल पेज है।

Django में प्रत्येक पृष्ठ को वापस करने के लिए एक यूआरएल बनाया जाना चाहिए। प्रत्येक मौजूदा यूआरएल के लिए दूसरा यूआरएल स्वचालित रूप से कैसे उत्पन्न किया जा सकता है? इसके अतिरिक्त, उन प्रत्येक यूआरएल के लिए एक संदर्भ कैसे बुलाया जा सकता है?

शायद यह दृश्य में किया जा सकता है? जैसे, एक .html एक्सटेंशन लौटा रहा है जो एएमपी पृष्ठ है, और उसके बाद यूआरएल के लिए टेम्पलेट भी प्रस्तुत करता है?

मेरे पास अभी तक कोई समाधान नहीं है कि इसका समाधान कैसे किया जाए। प्रतिक्रिया और सुझाव खोज रहे हैं। ऐसा लगता है कि यह पहला सवाल है जो डीजेगो और एएमपी-एचटीएमएल पर स्टैक ओवरफ्लो पर पोस्ट किया गया है। यह आखिरी नहीं होने की संभावना है।

+0

हो सकता है कि आप किस टेम्पलेट का उपयोग करने के लिए एक मिडलवेयर का उपयोग कर सकें, मुझे यह देखने के लिए amp-html प्रोजेक्ट की जांच करनी होगी कि यह कैसे काम करना है, – cdvv7788

उत्तर

4

मैं एक साथी एएमपी डेवलपर django लेकिन निश्चित रूप से नहीं एक विशेषज्ञ, हम निम्नलिखित यूआरएल ढांचा

url(r'^api/news/', include('news.api_urls'), {"type", "regular"}), # regular 

url(r'^api/amp/news/', include('news.api_urls'), {"type": "amp"}), # AMP 

और ध्यान में रखते हुए अलग संदर्भ पैदा टेम्पलेट्स को पास करने की, टेम्पलेट्स बिंदु में गिर्जे का वस्र उपयोग कर रहे हैं हूँ करने के लिए एक दूसरे को और यह

+1

क्या आप अभी उपयोग नहीं कर सकते एकल 'url' के रूप में:' url (r '^ api/(:? (? पी amp) /)? समाचार/'और दृश्य में' टाइप = 'नियमित' कीवर्ड तर्क होगा ताकि जब regex 'टाइप =' amp 'से गुज़रने वाले' टाइप 'समूह से मेल खाता है और जब यह दृश्य से मेल नहीं खाता है तो' टाइप = 'नियमित' हो जाता है। – Bakuriu

+0

@ बाकुरीयू जो ऐसा करने का एक अधिक प्रभावी तरीका है, धन्यवाद सुझाव के लिए –

3

काम करने के लिए ध्यान में रखते हुए लगता है, आप एक प्राप्त क्वेरी पैरामीटर में की तरह अलग अलग तरीके का एक संख्या में टेम्पलेट चर सेट कर सकते हैं,:

if request.GET.get('amp', 0) == 1: 
    template_name = "amp.html" 
else: 
    template_name = "regular.html" 

आप संदर्भ है, जो आप फिर जब पृष्ठ को प्रदर्शित करने का उपयोग कर सकते में चर के रूप में template_name पारित कर सकते हैं:

{% extends template_name %} 

कि तुम दो पूरी तरह से अलग ही दृश्य कोड/यूआरएल/संदर्भ का उपयोग कर लेआउट रेंडर करने के लिए अनुमति देगा।

1

मैं मेटा

में टेम्पलेट

{% amp_canonical_link request %} में इस

{% load amp_tags %} के लिए एप्लिकेशन https://github.com/shtalinberg/django-amp-tools बना सकते हैं और बनाने के "amp" टेम्पलेट्स में फ़ोल्डर

यह पहली रिलीज है।अधिक दस्तावेज और वायदा

संबंधित मुद्दे