Django

2009-08-04 4 views
5

में मार्कडाउन और पाइगल्स के साथ सिंटैक्स हाइलाइटिंग मैं मार्कडाउन (2.0.1) & पायगल्स (1.0) का उपयोग करके अपने सरल Django (1.1) परीक्षण ऐप में काम कर रहे वाक्यविन्यास को हाइलाइट करने का प्रयास कर रहा हूं। विचार है कि उपयोगकर्ता इनपुट से HTML उत्पन्न करना है जो मार्कडाउन प्रारूप में है और डीबी दोनों में स्टोर करता है, इसलिए मुझे fetch के दौरान HTML अनुवाद में मार्कडाउन करने की आवश्यकता नहीं है।Django

अभी तक मेरे पास मार्कडाउन प्रसंस्करण काम कर रहा है लेकिन मुझे कामकाजी हाइलाइटिंग प्रतीत नहीं होता है। मेरे models.py इस तरह दिखता है:

:::python 
    from foo import bar 
    foobar = bar('foo') 
:

from django.db import models 
from django.contrib import admin 
from markdown import markdown 

class BlogPost(models.Model): 
    title = models.CharField(max_length = 150) 
    body = models.TextField() 
    body_html = models.TextField(editable=False, blank=True, null=True) 
    timestamp = models.DateTimeField() 

    def save(self): 
     self.body_html = markdown(self.body, ['codehilite']) 
     super(BlogPost, self).save() 

    class Meta: 
     ordering = ('-timestamp',) 

class BlogPostAdmin(admin.ModelAdmin): 
    list_display = ('title', 'timestamp') 

admin.site.register(BlogPost, BlogPostAdmin) 

अब तक सिर्फ markdown वाक्यविन्यास काम करता है परीक्षण लेकिन अगर मैं निम्नलिखित मैं किसी भी वाक्य रचना उत्पादन या उत्पादन स्रोत में प्रकाश डाला नहीं देखा है की तरह कुछ कोशिश

मैं आउटपुट स्रोत में कम से कम कोड तत्वों का एक सेट देखने की उम्मीद करता हूं।

उत्तर

3

इसे फिक्स्ड! कोड को तीन जगहों पर इंडेंट नहीं किया जाना चाहिए था!

मैंने प्रश्न पूछने से पहले परीक्षण करने के लिए कई संपादन किए लेकिन ऐसा लगता है कि फ़ायरफ़ॉक्स ने टेस्ट पोस्ट के रूप में पृष्ठ को कैश किया था। चूंकि मैं एक पृष्ठ रीलोड करने के लिए विंडोज कुंजीपटल शॉर्टकट का उपयोग कर रहा था मैक कीबोर्ड शॉर्टकट नहीं, ओह!

मैंने देखा कि यह काम कर रहा था जब मैंने चार अंतरिक्ष इंडेंटिंग के साथ निराशा से एक नया टेस्ट पोस्ट बनाया और फिर पेज स्रोत का निरीक्षण किया।

+0

एप्लिकेशन कीबोर्ड शॉर्टकट जो कई प्लेटफार्मों में भिन्न होते हैं ऐसे दर्द हैं। – Danielb

+0

जब मैं विंडोज पर काम करना चाहता हूं तो मैं Ctrl और Alt को स्वैप करता हूं। यह सबकुछ हल नहीं करता है (यदि केवल विंडोज ऐप लेखक अपने प्राथमिकता मेनू के लिए किसी स्थान पर निर्णय लेते हैं!) लेकिन यह निश्चित रूप से मदद करता है। –

1

इसे मार्कडाउन प्रारूप में डेटाबेस में संग्रहीत करना बेहतर है, और उसके बाद इसे प्रस्तुति प्रारूप में परिवर्तित करें (HTML) जिसे आप प्रदर्शित करना चाहते हैं। इस तरह आप अपना डेटा उसी तरह संपादित कर सकते हैं जैसा आपने इसे पहले स्थान पर जोड़ा था।

अपने टेम्पलेट के शीर्ष पर आपको शामिल करना चाहिए:

{% load markup %} 

फिर टेम्पलेट फिल्टर markdown का उपयोग करें।

{{ blog_post.body|markdown}} 

फिर बस यह सुनिश्चित करने के लिए सीएसएस का उपयोग करें कि आपके पास उचित स्वरूपण है।

यदि आपके पास यहां नहीं है तो आपको install the markdown package की भी आवश्यकता है।

और अपने INSTALLED_APPS में अपने settings.py में आप 'django.contrib.markup'

For more information see this page शामिल होना चाहिए।

क्यों आप फ़ॉर्मेटिंग नहीं देखते हैं, चिह्नित स्रोत देखें और सुनिश्चित करें कि यह सही तरीके से काम कर रहा है। यानी सुनिश्चित करें कि यह ठीक से चिह्नित हो रहा है। फिर सुनिश्चित करें कि आपके पास आवश्यक स्टाइलशीट हैं।

मार्कडाउन प्रारूप चिह्नित होने से पहले प्रारूप है।

आप चिह्नित तत्वों में कक्षा जोड़ने के लिए JQuery का भी उपयोग कर सकते हैं, ताकि आप शेष पृष्ठ को प्रभावित किए बिना मार्कडाउन टेक्स्ट को स्टाइल कर सकें।

+0

मैं उपयोगकर्ता द्वारा दर्ज किए गए मूल को संग्रहीत कर रहा हूं (इसलिए वे इसे मार्कडाउन के साथ संपादित करना जारी रख सकते हैं) और मैं संसाधित आउटपुट को भी सहेज रहा हूं इसलिए इसे हर बार इसे परिवर्तित करने की आवश्यकता नहीं है। – Danielb

+0

इसे बदलने के लिए आवश्यक प्रकाश प्रसंस्करण के लिए, मुझे लगता है कि अंतरिक्ष को सहेजना बेहतर है।मुझे 2 जगहों पर एक ही चीज़ होने से नफरत है, लेकिन शायद यह प्रोग्रामर होने का सिर्फ एक हिस्सा है। लेकिन यह आपके ऊपर है :) –

+0

"मुझे भी 2 जगहों पर एक ही चीज़ होने से नफरत है, लेकिन शायद यह प्रोग्रामर होने का सिर्फ एक हिस्सा है।" हे, मुझे दो बार एक ही काम करने से नफरत है, अगर मुझे प्रोग्रामर होने का हिस्सा भी नहीं है;) – Danielb