ssxn58
V2EX  ›  Django

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

  •  1
     
  •   ssxn58 · Nov 8, 2017 · 5259 views
    This topic created in 3286 days ago, the information mentioned may be changed or developed.

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

  • 开开开开开
  • Supplement 1  ·  Nov 8, 2017
    目标效果是这样的:

    <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 replies  •  2017-11-08 20:37:29 +08:00
    ssxn58
    ssxn58
    OP
    Nov 8, 2017
    1
    额……看来第一个问题应该是,怎么在帖子里面贴代码…………
    sonyxperia
    sonyxperia
    Nov 8, 2017
    2
    你这一手大小写着实看晕了我
    holajamc
    holajamc
    Nov 8, 2017
    3
    你这一手大小写着实看晕了我
    JasperYanky
    JasperYanky
    Nov 8, 2017
    4
    你这一手大小写着实看晕了我
    wuyuanyi135
    wuyuanyi135
    Nov 8, 2017
    5
    放到 gist 上吧
    tamlok
    tamlok
    Nov 8, 2017 via Android
    6
    你这一手大小写着实看晕了我
    toono
    toono
    Nov 8, 2017
    7
    你这一手大小写着实看晕了我
    hiluluke
    hiluluke
    Nov 8, 2017
    8
    为啥要大写 J, 有什么用意?
    HelloAmadeus
    HelloAmadeus
    Nov 8, 2017 via Android
    9
    我估摸着,大概是为了强调 d 不发音才这样写吧
    uhayate
    uhayate
    Nov 8, 2017 via iPhone
    10
    看着你这样写我更觉得 d 要发音,仿 jQuery 么
    wizardoz
    wizardoz
    Nov 8, 2017
    12
    @testcount 还是 僵狗 比较接地气
    Fe1Fan
    Fe1Fan
    Nov 8, 2017 via iPhone
    13
    你这一手大小写着实看晕了我
    ssxn58
    ssxn58
    OP
    Nov 8, 2017
    14
    昨天才开始学 Django 的,不太了解……望见谅…………
    所以这里是不能贴代码的吗?我贴出来的 HTML 代码直接就给解释了……难道这不是 V2EX 的 BUG ?会不会被有心人给利用了,侵入后台?
    leemove
    leemove
    Nov 8, 2017
    15
    @ssxn58 贴代码要用 MarkDown 的格式,你去搜索下就懂了.
    zzhcoder
    zzhcoder
    Nov 8, 2017
    16
    难道不是 {html_str | safe}
    diydry
    diydry
    Nov 8, 2017
    17
    你这一手大小写着实看晕了我
    shuson
    shuson
    Nov 8, 2017
    18
    Hstar
    Hstar
    Nov 8, 2017
    19
    正经的 django 实现方式是把 names 传给 rander,在模板里循环 name 渲染四个按钮出来.
    [gist 示例]( https://gist.github.com/StarsHu/300690b2a2f52bd1ed55a06b391aec42)
    ssxn58
    ssxn58
    OP
    Nov 8, 2017
    20
    @Hstar 感谢您的回复,这个方法我知道,但是我不仅要遍历,还要在模板里面可以任意调整顺序,例如我可以把 third 放在第一个,second 不显示,把 first 放在最后一个,并且在客户端查看源代码完全不知道 names 里面有 second 存在。其实 names 是数据库里的内容,这里为了方便只是写成了 list。
    今天下午又补了一下 jQuery 的知识点,如果只是布局顺序的话,好像可以通过前端技术来实现,但是隐藏数据库的部分内容,就不能仅仅使用前端技术了吧?
    我本职是写 C 的,看到大段相同、相似的代码,就想抽出来写个函数或者宏,可能有点偏执吧……
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1655 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    ♥ Do have faith in what you're doing.