dJango 新手的一个模板渲染问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ssxn58
V2EX    Django

dJango 新手的一个模板渲染问题

  •  1
     
  •   ssxn58 2017-11-08 11:30:03 +08:00 4368 次点击
    这是一个创建于 2894 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我需要的最终效果是这样的:

  • 第 1 条附言    2017-11-08 14:50:30 +08:00
    目标效果是这样的:

    <li><img src="images/first.png" /><a href="toggle/?name=first &action=on">开</a><a href="toggle/?name=first &action=off">关</a></li>
    <li><img src="images/second.png" /><a href="toggle/?name=second &action=on">开</a><a href="toggle/?name=second &action=off">关</a></li>
    <li><img src="images/third.png" /><a href="toggle/?name=third &action=on">开</a><a href="toggle/?name=third &action=off">关</a></li>
    <li><img src="images/fourth.png" /><a href="toggle/?name=fourth &action=on">开</a><a href="toggle/?name=fourth &action=off">关</a></li>

    我的实现是这样的:
    模板:
    <li>{{ first }}</li>
    <li>{{ second }}</li>
    <li>{{ third }}</li>
    <li>{{ fourth }}</li>
    python 代码:
    def index(request):
    cOntext= {}
    names = ['first','second','third','fourth']
    for name in names :
    context[name] = '<img src="images/'+name+'.png" /><a href="toggle/?name='+name+'&action=on">开</a><a href="toggle/?name='+name+'&action=off">关</a>'

    return render(request,'index.html',cOntext=context)
    实际效果是 python 代码里面的 HTML 标签被渲染成字符串了,这个应该怎么处理,让 python 代码里面也可以写 HTML 标签?
    20 条回复    2017-11-08 20:37:29 +08:00
    ssxn58
        1
    ssxn58  
    OP
       2017-11-08 11:30:43 +08:00
    额……看来第一个问题应该是,怎么在帖子里面贴代码…………
    sonyxperia
        2
    sonyxperia  
       2017-11-08 11:31:35 +08:00
    你这一手大小写着实看晕了我
    holajamc
        3
    holajamc  
       2017-11-08 11:41:33 +08:00
    你这一手大小写着实看晕了我
    JasperYanky
        4
    JasperYanky  
       2017-11-08 11:46:53 +08:00
    你这一手大小写着实看晕了我
        5
    wuyuanyi135  
       2017-11-08 11:48:47 +08:00
    放到 gist 上吧
    tamlok
        6
    tamlok  
       2017-11-08 11:49:02 +08:00 via Android
    你这一手大小写着实看晕了我
    toono
        7
    toono  
       2017-11-08 12:29:48 +08:00
    你这一手大小写着实看晕了我
    hiluluke
        8
    hiluluke  
       2017-11-08 12:31:12 +08:00
    为啥要大写 J, 有什么用意?
    HelloAmadeus
        9
    HelloAmadeus  
       2017-11-08 12:31:20 +08:00 via Android
    我估摸着,大概是为了强调 d 不发音才这样写吧
    uhayate
        10
    uhayate  
       2017-11-08 12:39:08 +08:00 via iPhone
    看着你这样写我更觉得 d 要发音,仿 jQuery 么
    testcount
        11
    testcount  
       2017-11-08 12:46:28 +08:00
    wizardoz
        12
    wizardoz  
       2017-11-08 12:57:47 +08:00
    @testcont 还是 僵狗 比较接地气
    feifan00x
        13
    feifan00x  
       2017-11-08 13:07:18 +08:00 via iPhone
    你这一手大小写着实看晕了我
    ssxn58
        14
    ssxn58  
    OP
       2017-11-08 13:51:07 +08:00
    昨天才开始学 Django 的,不太了解……望见谅…………
    所以这里是不能贴代码的吗?我贴出来的 HTML 代码直接就给解释了……难道这不是 V2EX 的 BUG ?会不会被有心人给利用了,侵入后台?
    leemove
        15
    leemove  
       2017-11-08 15:21:15 +08:00
    @ssxn58 贴代码要用 MarkDown 的格式,你去搜索下就懂了.
    zzhcoder
        16
    zzhcoder  
       2017-11-08 15:38:22 +08:00
    难道不是 {html_str | safe}
    diydry
        17
    diydry  
       2017-11-08 15:40:19 +08:00
    你这一手大小写着实看晕了我
    shuson
        18
    shuson  
       2017-11-08 15:45:34 +08:00
    Hstar
        19
    Hstar  
       2017-11-08 16:08:33 +08:00
    正经的 django 实现方式是把 names 传给 rander,在模板里循环 name 渲染四个按钮出来.
    [gist 示例]( https://gist.github.com/StarsHu/300690b2a2f52bd1ed55a06b391aec42)
    ssxn58
        20
    ssxn58  
    OP
       2017-11-08 20:37:29 +08:00
    @Hstar 感谢您的回复,这个方法我知道,但是我不仅要遍历,还要在模板里面可以任意调整顺序,例如我可以把 third 放在第一个,second 不显示,把 first 放在最后一个,并且在客户端查看源代码完全不知道 names 里面有 second 存在。其实 names 是数据库里的内容,这里为了方便只是写成了 list。
    今天下午又补了一下 jQuery 的知识点,如果只是布局顺序的话,好像可以通过前端技术来实现,但是隐藏数据库的部分内容,就不能仅仅使用前端技术了吧?
    我本职是写 C 的,看到大段相同、相似的代码,就想抽出来写个函数或者宏,可能有点偏执吧……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5566 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:13 PVG 15:13 LAX 00:13 JFK 03:13
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86