I was actually just about to reply to say I had found this problem :)
Silly me. However, I now have an issue (which is probably out of
scope here, but I'll ask here just incase anyone can help).
Now I get the formatted code back, however when I render it in my
template, rather than actually coming out as markup it comes out as
marked-up text, like so:
<table class="sourcetable"><tr><td class="linenos"><pre> 1 2 3 4 5 6 7
8 9 10 11 12</pre></td><td class="code"><div class="source"><pre><span
class="k">from</span> <span
class="nn">django.conf.urls.defaults</span> <span
class="k">import</span> <span class="o">*</span> <span
class="k">from</span> <span
class="nn">pastemonkey2.pastes.models</span> <span
class="k">import</span> <span class="n">Paste</span><span
class="p">,</span> <span class="n">Language</span> <span
class="k">from</span> <span
class="nn">pastemonkey2.pastes.views</span> <span
class="k">import</span> <span class="o">*</span> <span
class="n">info_dict</span> <span class="o">=</span> <span
class="p">{</span> <span class="s">'queryset'</span><span
class="p">:</span> <span class="n">Paste</span><span
class="o">.</span><span class="n">objects</span><span
class="o">.</span><span class="n">all</span><span class="p">(),</span>
<span class="p">}</span> <span class="n">urlpatterns</span> <span
class="o">=</span> <span class="n">patterns</span><span
class="p">(</span><span class="s">''</span><span
class="p">,</span> <span class="p">(</span><span
class="s">r'^$'</span><span class="p">,</span> <span
class="s">'django.views.generic.list_detail.object_list'</span><span
class="p">,</span> <span class="n">info_dict</span><span
class="p">),</span> <span class="p">(</span><span
class="s">r'^(?P<object_id>\d+)/$'</span><span
class="p">,</span> <span
class="s">'pastemonkey2.pastes.views.show_paste'</span><span
class="p">),</span> <span class="p">)</span> </pre></div>
</td></tr></table>
I'm not sure if this is something with Django, as the formatting seems
to be fine, it just doesn't seem to render correctly :/
On Nov 29, 2007 3:47 PM, Karen Tracey <[EMAIL PROTECTED]> wrote:
>
> On 11/29/07, Tane Piper <[EMAIL PROTECTED]> wrote:
>
>
> >
> > Hi Folks,
> >
> > I have only been using Python since the weekend, and Django since
> > Tuesday so I'm quite new to the API, and I've hit a snag with what I'm
> > trying to do. I'm currently working on porting over my CakePHP
> > application which used the GeSHi library for syntax highlighting and I
> > came across Pygments as the Python alternative. What I am trying to
> > do is take a paste from the database which is stored as plain text and
> > display it highlighted.
> >
> > So far, here is my view:
> >
> > from django.shortcuts import render_to_response, get_object_or_404
> > from django.http import HttpResponseRedirect
> > from django.core.urlresolvers import reverse
> > from pastemonkey2.pastes.models import Paste, Language
> >
> > from pygments import highlight
> > from pygments.lexers import get_lexer_by_name
> > from pygments.formatters import HtmlFormatter
> >
> > def highlight(source, language):
> > lexer = get_lexer_by_name(language, stripall=True)
> > formatter = HtmlFormatter(linenos=True, cssclass="source")
> > result = (source, lexer, formatter)
> > return result
> >
> > def show_paste(request, object_id):
> > p = get_object_or_404(Paste, pk=object_id)
> > p.formatted = highlight(str(p.paste), str(p.language))
> > return render_to_response('pastes/paste_detail.html', {'object': p})
>
> You are first importing the pygments highlight function, then defining your
> own, then you never actually call the pygments highlight. I believe what
> you want is something more like:
>
> def format(source, language):
>
> lexer = get_lexer_by_name(language, stripall=True)
> formatter = HtmlFormatter(linenos=True, cssclass="source")
> result = highlight(source, lexer, formatter)
>
> return result
>
> def show_paste(request, object_id):
> p = get_object_or_404(Paste, pk=object_id)
> p.formatted = format(str(p.paste), str(p.language))
>
> return render_to_response('pastes/paste_detail.html', {'object': p})
>
> That is, call your function something other than highlight, and within it
> return the result of calling the pygments highlight function.
>
> Karen
>
>
> > What I am trying to do in show_paste is when the paste is received
> > from the database, I pass the paste and language from the model into
> > the highlight function, which should generate the marked up code and
> > pass back, creating a new p.formatted object, which I display in my
> > template. However, what I get back is this:
> >
> > ("from django.conf.urls.defaults import *\r\nfrom
> > pastemonkey2.pastes.models import Paste, Language\r\nfrom
> > pastemonkey2.pastes.views import *\r\n\r\ninfo_dict = {\r\n
> > 'queryset': Paste.objects.all(),\r\n}\r\n\r\nurlpatterns =
> > patterns('',\r\n (r'^$',
> > 'django.views.generic.list_detail.object_list', info_dict),\r\n
> > (r'^(?P<object_id>\\d+)/$',
> > 'pastemonkey2.pastes.views.show_paste'),\r\n)",
> > <pygments.lexers.PythonLexer with {'stripall': True}>,
> > <pygments.formatters.html.HtmlFormatter object at 0x88ca1ec>)
> >
> > Instead of nice marked up code. I'm wondering if anyone can suggest
> > where I am going wrong?
> >
> > Thanks
> >
> >
> > Tane Piper
> > Blog - http://digitalspaghetti.me.uk
> > AJAX Pastebin - http://pastemonkey.org
> >
> > This email is: [ ] blogable [ x ] ask first [ ] private
> >
> >
> >
> >
>
>
> >
>
--
Tane Piper
Blog - http://digitalspaghetti.me.uk
AJAX Pastebin - http://pastemonkey.org
This email is: [ ] blogable [ x ] ask first [ ] private
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---