django中Markdwon解析的问题

2012-11-08 13:52:06 +08:00
 everyx
urls.py: http://p.vim-cn.com/dnb?python
views.py: http://p.vim-cn.com/dmX?python
http://everyx.in/blog/ 对应的template http://p.vim-cn.com/dmY?html
http://everyx.in/blog/3 对应的template http://p.vim-cn.com/dmZ?html

为什么在 http://everyx.in/blog/ 上就不能成功解析呢?完全没有头绪啊……
3870 次点击
所在节点    Django
5 条回复
hepochen
2012-11-20 11:35:32 +08:00
你在view_post中处理了内容,post.body = markdown(post.body)

而在list_blog中则没有任何的处理。

不建议放到view中处理,你可以直接在template中进行转义。
everyx
2012-11-20 15:15:45 +08:00
@hepochen 谢谢你的回答,可是我在list_blog中进行了处理啊,
try:
contacts = paginator.page(page)
for i in range(len(contacts)):
contacts[i].body = markdown(contacts[i].body)
except PageNotAnInteger:
contacts = paginator.page(1)
except EmptyPage:
contacts = paginator.page(paginator.num_pages)
hepochen
2012-11-20 17:08:30 +08:00
自己看这个页面 http://everyx.in/blog/?page=1 ,应该就理解自己写的逻辑有问题了。

几个建议:

1, page可以直接走url,不要走GET, 如果一定走GET,那么这样处理 page = request.GET.get("page") --> page = request.GET.get("page", 1)

2, Post.objects.all().order_by('-created') 不可取 Post.objects.order_by('-created')会恰当些

3,markdown不建议放到view中处理,你可以直接在template中进行转义

4,for i in range(len(contacts)) --> for post in posts 可能更容易读懂

5,如果不想改当前的代码,那就把 for i in range(len(contacts)): contacts[i].body = markdown(contacts[i].body) 移到 finally 这个节点吧
hepochen
2012-11-20 17:11:35 +08:00
@everyx sorry,很久没碰django了 Post.objects.order_by('-created') 可能是错误的语法, Post.objects.filter().order_by('-created')
everyx
2012-11-21 19:52:04 +08:00
@hepochen 谢谢提醒,原来在try里面对markdown进行parse,如果我的GET请求中没有page值得化就会有exception了,而我没有在捕获异常的流程里进行parse,Thx

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/52081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX