作者uranusjr (←这人是超级笨蛋)
看板Python
标题Re: [问题] 请问Django的一个用法
时间Sun Jun 30 01:08:53 2013
※ 引述《guitarpl (撞墙期)》之铭言:
: 这几天研究Django有点心得
: 也试着做了一些内容
: 目前遇到一个问题是
: 当在某个页面,那他相对应的Link 要加一个class = "current"
: e.g.
: <li class="current"><a href="/">Home</a></li>
: <li><a href="/about">About</a></li>
: 假如目前在home则是上面这样
: 而在about页面的时候则是
: <li><a href="/">Home</a></li>
: <li class="current"><a href="/about">About</a></li>
: 因为超连结的部分我都把他放在basic.html
: 其他html都是extends这个档案
: 1. 请问有甚麽办法可以做到我上面说的那个效果呢? {% url %}有办法用在这个地方吗?
: 2. Django中是否有函数可以回传目前的网址?
: 或是有相关的文件可以参考,目前看了一些文件似乎都不能非常符合我要的效果~"~
: 先谢谢了~~
先回答第二个问题
如果你有把 RequestContext 物件传入 template[1]
那麽你就可以在 template 中用 request 变数存取当下的 HttpRequest 物件
参见
https://docs.djangoproject.com/en/dev/ref/request-response/
视需求选用 request.path, request.get_full_path 和 request.build_absolute_uri
有了上面的东西之後, 第一个问题就简单了
你可以写成这样
https://gist.github.com/uranusjr/5891821
不过上面这东西说真的实在很违反 DRY 原则
我会包成一个 inclusion tag, 像这样
https://gist.github.com/uranusjr/5891869
如果搭配 url reverse 而不是直接写死 MENU_PAGES 里面的 URL 就更好
这个就让你自己做吧
[1] 最简单的方法是用 render shortcut 取代 render_to_response
参见
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/
--
Les grandes et les meilleurs
tone from "Zadok the Priest"
Eine grosse stattliche Veranstaltung
by F. Handel
THE MAIN EVENT! These are the men
Sie sind die Besten
"Champions League" by Tony Britten THESE ARE THE CHAMPIONS!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.32.81.146
1F:推 guitarpl:方法一很好理解,二的话我可能要再啃一下document 06/30 01:22
2F:→ guitarpl:谢谢您的回答。我一直陷入PHP的思维,要赶快跳脱XD 06/30 01:24