V2EX 首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Sponsored by
二向箔安全
​一对一的线上 web 安全培训服务
咨询微信:twosecurityrefer
Promoted by 二向箔安全
V2EX  ›  Django

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

  •  1
     
  •   ssxn58 · 37 天前 · 871 次点击
    这是一个创建于 37 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

  • 第 1 条附言  ·  37 天前
    目标效果是这样的:

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