大圣画廊v0.2(2015.7.17)

0.2版本号加入的功能

  • 以tag分类图片
  • 美化。添加瀑布流效果
  • 添加tag页和单张图片页
  • 添加公布图片页

以下是具体解释。

每添加一个功能,都要从模型。模板,视图,路由四个方面一一改动。

模型:添加tag属性

思考了一下依照昨天想的分类方法还是没办法考虑全然。于是决定用tag标签分类法。

首先在models.py中新建一个Tag类,仅仅有一个name属性

class Tag(models.Model):
    name=models.CharField(max_length=20,null=False,unique=True,default="")
    def __unicode__(self):
        return self.name
admin.site.register(Tag)

然后在Photo类中指定多对多属性tags

tags=models.ManyToManyField(Tag,related_name=‘has_photos‘,blank=True)

模板:添加tag页,photo页和post页

分别用来展示一个tag包括的全部图片和单个图片。

所以tag的展示应该和首页是几乎相同的、

tag.html

    {% extends "base.html" %}
    {% block title %}{{tag.name}}{% endblock %}
    {% block content %}
    <div class="jumbotron">
      <h1 align="center">{{tag.name}}</h1>
    </div>
    <div class="grid-sizer"></div>
    {% for photo in tag.has_photos.all %}
    <div class="grid-item">
      <a href="p/{{photo.id}}/">
    <img src="{{photo.url}}">
      </a>
      <p>{{photo.title}}</p>
      <p>{% for tag in photo.tags.all %} <a href=‘/t/{{tag.id}}/‘>{{tag.name}}</a> {% endfor %}</p>
    </div>
    {% endfor %}
    {% endblock %}

在这里在上面设置了一个巨幕来展示tag的名称,以下放上图片。

tag变量由视图传入,然后通过tag.has_photos.all获取该tag全部的图片。

photo.html

    {% extends "base.html" %}
    {% block title %}{{photo.title}}{% endblock %}
    {% block content %}
    <div class="jumbotron" align="center">
      <h3>{{photo.title}}</h3>
      <img src="{{photo.url}}" >
    </div>
    <div class="grid-sizer"></div>
    {% endblock %}

传入photo然后展示,非常easy。

post.html

post页面须要一个表单来公布图片信息

    {% extends "base.html" %}
    {% block title %}公布新图片{% endblock %}
    {% block content %}
    <form class="form-horizontal panel container" method="POST" action=".">{% csrf_token %}
        <div class="form-group">
            <label  class="control-label" for="exampleReply">标题(必填。每张图片都必须有名字哦):</label>
            <input type=‘text‘ name=‘title‘ value="" class="form-control" id="exampleReply" placeholder=""></input>
        </div>
        <div class="form-group">
            <label  class="control-label" for="exampleReply">链接(不支持直接上传,能够先把图片公布到堆糖等站点再把链接粘贴过来。谢谢合作):</label>
            <input type=‘text‘ name=‘url‘ value="" class="form-control" id="exampleReply" placeholder=""></input>
        </div>
        <div class="form-group">
            <label  class="control-label" for="exampleReply">标签(多个可用空格隔开):</label>
            <input type=‘text‘ name=‘tags‘ value="" class="form-control" id="exampleReply" placeholder=""></input>
            <label  class="control-label" for="exampleReply">最好使用含义明白的名词或形容词。能够指明图片来源和图片类型最好。

已有的便签见下</label>
        </div>
        <div class="form-group col-md-2">
            <input type="hidden" name="next" value="/"/>
            <input type="submit" class="btn btn-lg btn-primary" value="公布"/>
        </div>
    </form>
    <ul class="list-group">
    {% for tag in tags %}
    <li class="list-group-item"><span class="badge">{{tag.}}</span>{{tag.name}}</li>
    {% endfor %}
    </ul>
    {% endblock %}

post传递三个參数。图片title,图片链接url,还有tag,tag以字符串形式传递。在视图文件里进行分割并和图片绑定。

路由:添加tag,photo和post的链接

加了三行而已:

    url(r‘^post/$‘,post,name=‘post_page‘),
    url(r‘^t/(?P<id>\d+)/$‘,show_by_tag,name=‘tag_page‘),
    url(r‘^p/(?P<id>\d+)/$‘,show_photo,name=‘show_photo_page‘),

以id而不是名字的方式在链接中传递信息,事实上是偷个懒,直接依据id获取对象要方便非常多。

视图:添加三个视图

post视图

略微有点复杂,用于展示表单,也用于接收处理数据

    def post(request):
        if request.method==‘POST‘:
            title=request.POST.get(‘title‘)
            url=request.POST.get(‘url‘)
                tags=request.POST.get(‘tags‘).split()
            new_photo=Photo.objects.create(
                title=title,
                url=url
            )
            if tags:
                for tag in tags:
                    new_tag,dummy=Tag.objects.get_or_create(name=tag)
                    new_photo.tags.add(new_tag)#add tag to new_photo
                    new_photo.save()
            return HttpResponseRedirect(‘/‘)
        else:
            tags=Tag.objects.all()
            return render_to_response(‘post.html‘,RequestContext(request,{‘tags‘:tags}))

当传输方法是POST时,获取post过来的数据,据此创建一个photo对象,然后把标签字符串分割一个分成单个的标签,加到photo的tags属性里面去,然后保存,跳转到首页。

当传输方法是GET时。直接展示表单页面,只是这里我在表单后面展示了全部存在的tag。

tag和photo视图

    def show_by_tag(request,id):
        tag=Tag.objects.get(pk=id)
        return render_to_response(‘tag.html‘,RequestContext(request,{‘tag‘:tag}))

    def show_photo(request,id):
        photo=Photo.objects.get(pk=id)
        return render_to_response(‘photo.html‘,RequestContext(request,{‘photo‘:photo}))

获取链接中id相应的tag和photo。然后传递參数就能够了

依旧是用pythonanywhere公布的:

大圣画廊

时间: 2024-10-27 06:49:03

大圣画廊v0.2(2015.7.17)的相关文章

大圣画廊v0.4.0(7.18)

0.4.0更新,增加照片评论功能,需要登录. 模型models.py #v0.4.0 增加照片评论 class Comment(models.Model): content=models.CharField(max_length=5000) author=models.ForeignKey(User,related_name='user_comments') time=models.DateTimeField(auto_now_add=True) photo=models.ForeignKey(

场景应用:互联网+《大圣归来》,引爆朋友圈

截止到本月25号,<大圣归来>票房突破了6.17亿元,打破<功夫熊猫2>记录,成为内地影史票房最高动画电影. 在公众眼中,<大圣归来>已经成为一部现象级的电影,正如马未都所言:<大圣归来>具备了向国际市场进军的一个先决条件,最重要的一点是,这部电影触动了中国人的心,把中国文化中就是人情那一事充分地表达,所以它引起了中国人的这种共鸣. 好品质+互联网助力大圣归来 作为<大圣归来>的出品方之一,微影时代CEO林宁认为,"好品质+互联网&qu

系统崩溃,大圣归来

走在程序员的路上,久了总会碰到一些系统崩溃的事件. 在 2011 年 8 月份某个阴雨连绵的周一,北弗吉尼亚一个 1000 万瓦特的变压器发生爆炸,在整个电网中带来了庞大的突增瞬间电压,对亚马逊位于弗吉尼亚州阿什伯恩(Ashburn)的一个数据中心造成了重创,导致这个数据中心的主电源关闭.亚马逊的杰出工程师詹姆斯·汉密尔顿(James Hamilton)当时正巧开车驶入该数据中心停车场,对于阿什伯恩数据中心来说,汉密尔顿在那个时刻到来是一个意外的惊喜,正当他们遭遇重创时有「大圣」经过帮助处理这些

琪丁大圣——各成员博客地址

琪丁大圣——各成员博客地址 小组成员名字 小组成员博客地址 ♦(琪)黄铭琪 http://www.cnblogs.com/mikky/  ♣(丁)方俊杰 http://www.cnblogs.com/imfjj/  ♥(大)余雅诗 http://www.cnblogs.com/ys1101/  ♠(圣)欧阳可圣  http://www.cnblogs.com/kevinkeke/

2016-02-06期 六小龄童《大圣归来》别来无恙 86版观音如来现身

http://www.ebeiwai.com/html/pxyw/201602068528.htmlhttp://www.ebeiwai.com/html/pxyw/201602068529.htmlhttp://www.ebeiwai.com/html/pxyw/201602068530.htmlhttp://www.ebeiwai.com/html/pxyw/201602068531.htmlhttp://www.ebeiwai.com/html/pxyw/201602068532.html

从《大闹天宫》到《大圣归来》

最近尝鲜看了一部3D版本的<大圣归来>,虽然有很多可以做的更好的地方,结局还可以更精彩,但是已经让我大呼过瘾.当年上海电影制片厂的<大闹天宫>不但是我们这帮70后,也影响了后面的80后.但是那之后,再次能精彩演绎西游记的动画片我仔细想了想,是0部.几十年的空白,现在终于让这部<大圣归来>填补了.现在,有很多关于西游记的评论,观点.但是似乎越来越趋向于让孙悟空这个形象从人们心中的光辉形象蜕变成一个不那么牛掰的角色.比如,通过西天取经路上大圣基本无法打败任何有靠山的,有背景

张珺 2015/07/17 个人文档

姓名 张珺 日期 信息楼南406,中蓝公寓蓝芳园D507,2015/07/17 主要工作及心得 今天,我们先去找老师对程序进行了检查,并讨论了关于报告编写的问题.针对老师指出的问题,以及老师提出的意见.建议,我们在回来后对程序进行了修改.我主要负责对程序界面中中文显示及界面标题的问题进行修改.此外,我继续进行了报告的编写工作 遇到的问题 界面显示.提示信息中缺乏中文信息 解决方法 按照老师要求修改界面和对话框

如何运营非著名IP?阴阳师与大圣归来背后有个成功密码

2016年以前,常常有做游戏的朋友向我"吐槽":"买不到好IP(具有知识产权的原创作品),太贵了!" 2016年以后,这些朋友则长吁一口气地告诉我:"还好没有买到好IP,不然亏得更厉害." 文/张书乐 原载于<人民邮电报>2017年1月6日<乐游记>专栏128期 IP情怀的落败,似乎是2016年游戏.影视以及其他泛娱乐领域的常态.这样的问题能解决吗? 源自IP的手机游戏<阴阳师>异常火爆,其实给出了一个答案.但

西游记之大圣归来 高清 720P 百度云下载

西游记之大圣归来 已经上映一月有余了,口碑不错,票房也不错, 希望国产动漫崛起,国产电影崛起. 我又无耻的下载盗版电影看了.罪过,罪过... 地址:西游记之大圣归来 提取码: p3pp 还没看过的园友可以在线或者下载下来欣赏,虽然是720p的,但是画质还是足够清晰的. 也可以顺手点一下推荐,让更多的人看到.