这两天把同学录的css搞了一下,决定在网站里面加上相册,通信录么,加个照片也不错,找了一下,用了django的photologue插件,挺好用的。By the way,这篇博客是接着上篇博客马上写的,之前用photologue的时候setting里面静态文件没配好,很麻烦。参照上一节配好之后,在photologue的 /django-photologue-2.2/photologue/templates/ 找到photologue文件夹,把整个photologue文件夹直接贴到自己项目的templates下,photologue的模版系统直接就能用了。就是它自带的模版非常不太好看,需要重写,这个稍后再说。

  先说说photologue的一些东西:

  首先在setting找到这儿,把‘photologe’加上

1 INSTALLED_APPS = (    '2     #之前的东西#3      'photologue',4 )

然后运行这两句

  python manage.py syncdb,这句是在admin站点管理里面同步photologue的数据库

  python manage.py plinit,初始化photologue的一些问题,出现这三个:admin_thumbnail,thumbnail,display的时候yes设置下尺寸,别的神马effect,reflect,no就可以,因为刚创建的和时候没有,yes的话会报错的。其实,这里怎么回答无所谓,因为站点管理的时候都能改。

  这两步之后打开站点管理就能看到多了photologue这个类,gallery uploads的时候需要把需要上传的图片们打包成.zip。

  另外,运行python manage.py plinit的时候回答的一些问题在photo sizes这里可以改,有三个是一定要有的,admin_thumbnail,thumbnail,display,没有的话添加上。在点photo的时候出现的图片大小就是admin_thumbnail设置的值。

  由于photologue的模版不好看,所以前端显示用的是jQuery的插件Slides,官网http://slidesjs.com/

  在slides文件夹下的examples/找一个喜欢的风格,比如我选的是Standard,将img、css、js文件夹考到media/static/文件夹下,哦别忘了上jQuery的官网把jQuery下载下来,放到js文件夹里。

  完成这些之后在view里面写好函数,url配好,最麻烦的是写模版还有改css要不然效果显示不了。

  代码。

1 #index_view.py2 3 from django.shortcuts import render_to_response4 from photologue.models import *5 6 def photo(request,template):7     object_list= Gallery.objects.all() #我这里不是用的Photo.objects.all(),用Gallery是想得到所有的相册8     return render_to_response(template,{'object_list':object_list})

1 #url2 3 urlpatterns += patterns('',4         url(r'^photologue/',include('photologue.urls')),5         url(r'^photo/',index_views.photo,{'template':'photologue/index.html'}),6         )

  photolgue的模版我只用了gallery_detail.html,和root.html,新写了一个index,也就是说在templates/photolgue文件夹下我有有index.html、gallery_detail.html,和root.html,root没改。贴一下html和css的代码,额,css引用是在我的base.html引用的一起贴下。

 base.html

<html><head><link type="text/css" href="/media/static/css/base.css" rel="stylesheet" /><link type="text/css" href="/media/static/css/global.css" rel="stylesheet" /><script src="/media/static/js/jquery-1.7.1.min.js"></script><script src="/media/static/js/slides.min.jquery.js"></script><script>        $(function(){            $('#slides').slides({                preload: true,                preloadImage: 'img/loading.gif',                play: 4000,                pause: 3000,                hoverPause: true,                effect: 'fade',                crossfade: true,                fadeSpeed: 2500,            });        });</script>

    {% block script %}    {% endblock %}    {% block title %}    {% endblock %}</head>

<body><div class = "warper"><div class = "header"><div class = "header-left"><h1 class = "header">                    {% block head %}                    {% endblock %}</h1></div><div class = "header-right"><div class = "nav"><ul id = "nav-global"><li id = "nav-homepage"><a href = "/">首页</a></li><li id = "nav-login"><a href = "/admin/">登录</a></li></ul></div>                {% block search %}                    {% endblock %}    </div></div></div>

    {% block content %}    {% endblock %}

</body></html>

 index.html 在这我仅仅想的到相册的url,所以在view里面我用的是Gallery而不是Photo

 1 {% extends "photologue/root.html" %} 2 {% block head %} 3     所有相册 4 {% endblock %} 5 {% block content %} 6  7 {% if object_list %} 8     {% for gallery in object_list %} 9     <div class="left-head">10         <h2><a href="{{ gallery.get_absolute_url }}">{{ gallery.title }}</a></h2>11     </div>12     {% endfor %}13 {% else %}14     <p>没有找到相册。</p>15 {% endif %}16 {% endblock %}

gallery_detail.html

 1 {% extends "photologue/root.html" %} 2  3 {% block head %} 4     相册:{{ object.title }} 5 {% endblock %} 6 {% block content %} 7  8 <div id="container"> 9     <div class="photo-gallery">10         <div class="example">11             <img src="/media/static/img/new-ribbon.png" width="112" height="112" alt="New Ribbon" id="ribbon">12                 <div id="slides">13                     <div class="slides_container">14                         {% for photo in object.public %}15                             <a href="{{ photo.image.url }}" title="{{ photo.title }}" target="_blank"><img src="{{ photo.get_display_url }}" width="800" height="600" alt="{{ photo.title }}"></a>16                         {% endfor %}17                     </div>18                         <a href="#" class="prev"><img src="/media/static/img/arrow-prev.png" width="24" height="43" alt="Arrow Prev"></a>19                         <a href="#" class="next"><img src="/media/static/img/arrow-next.png" width="24" height="43" alt="Arrow Next"></a>20                 </div>21                         <img src="/media/static/img/frame.png" width="739" height="341" alt="Frame" id="frame">22         </div>23     </div>24 </div>25 26 <div class = "left-head">27     <h2><a href="/photo/">查看所有相册</a></h2>28 </div>29 30 {% endblock %}

base.css

 1 body{ 2 background-color:eeeeee 3 } 4 div.header,div.footer{ 5 margin:0; 6 color:white; 7 padding:0.5em; 8 background-color: gray; 9 }10 div.header{11 height: 100px;12 }13 div.header-left{14 padding:0.2em;15 margin:0;16 float:left;17 width:1000px;18 }19 div.header-right{20 padding:0;21 margin-left:190px;22 }23 24 div.nav{25 padding:0;26 margin:0;27 float:right;28 }29 30 div.nav ul{31 padding-bottom:2em;32 margin:0;33 list-style-type:none;    34 }35 36 div.nav a{37 width:7em;38 text-decoration:none;39 color:white;40 padding:0.2em 0.6em;41 border-right:1px solid white;42 }43 44 div.nav a:hover 45 {46     background-color:#66666647 }48 div.nav li{display:inline}49 50 div.left-head a{51     margin-left:0.5em;52     padding-left:0.2em;53     padding-top: 0.2em;54     padding-right:2.2em;55     padding-bottom:0.2em;56     text-decoration:none;57     color:663366;58 }59 div.left-head a:hover 60 {61     background-color:#cccccc;62 }63 64 div.search{65 float:right;66 padding:0;67 margin:0;68 69 }70 .form {71 padding:1;72 margin:0;73 74 }75 76 table.table_record_list {77     border: 1px solid #888888;78     border-collapse: collapse;79     font-family: Arial,Helvetica,sans-serif;80     width: 100%;81 }82 table.table_record_list th {83     background-color: #CCCCCC;84     border: 1px solid #888888;85     padding: 5px 15px 5px 5px;86     text-align: left;87     vertical-align: baseline;88 }89 table.table_record_list td {90     background-color: #EFEFEF;91     border: 1px solid #AAAAAA;92     padding: 5px 15px 5px 5px;93     vertical-align: text-top;94 }

global.css

  1 /*   2     Resets defualt browser settings  3     reset.css  4 */  5 /*  6     Page style  7 */  8   9  10 #container { 11     width:800px; 12     padding:10px; 13     margin:0 auto; 14     position:relative; 15     z-index:0; 16     top:20px; 17 } 18  19 #example { 20     width:820px; 21     height:650px; 22     position:relative; 23 } 24  25 #ribbon { 26     position:absolute; 27     top:-3px; 28     left:-15px; 29     z-index:500; 30 } 31  32 #frame { 33     position:absolute; 34     z-index:0; 35     width:1030px; 36     height:600px; 37     top:-3px; 38     left:-110px; 39 } 40  41 /* 42     Slideshow 43 */ 44  45 #slides { 46     position:absolute; 47     top:15px; 48     left:4px; 49     z-index:100; 50 } 51  52 /* 53     Slides container 54     Important: 55     Set the width of your slides container 56     Set to display none, prevents content flash 57 */ 58  59 .slides_container { 60     width:820px; 61     height:498px; 62     overflow:hidden; 63     position:relative; 64     display:none; 65 } 66  67 /* 68     Each slide 69     Important: 70     Set the width of your slides 71     If height not specified height will be set by the slide content 72     Set to display block 73 */ 74  75 .slides_container a { 76     width:570px; 77     height:270px; 78     display:block; 79 } 80  81 .slides_container a img { 82     display:block; 83 } 84  85 /* 86     Next/prev buttons 87 */ 88  89 #slides .next,#slides .prev { 90     position:absolute; 91     top:207px; 92     left:-39px; 93     width:24px; 94     height:43px; 95     display:block; 96     z-index:101; 97 } 98  99 #slides .next {100     left:810px;101 }102 103 /*104     Pagination105 */106 107 .pagination {108     margin:26px auto 0;109 }110 111 .pagination li {112     float:left;113     margin:0 1px;114     list-style:none;115 }116 117 .pagination li a {118     display:block;119     width:12px;120     height:0;121     padding-top:12px;122     background-image:url(../img/pagination.png);123     background-position:0 0;124     float:left;125     overflow:hidden;126 }127 128 .pagination li.current a {129     background-position:0 -12px;130 }131 132 /*133     Footer134 */135 136 #footer {137     text-align:center;138     width:580px;139     margin-top:9px;140     padding:4.5px 0 18px;141     border-top:1px solid #dfdfdf;142 }143 144 #footer p {145     margin:4.5px 0;146     font-size:1.0em;147 }148 149 /*150     Anchors151 */152 153 a:link,a:visited {154     color:#599100;155     text-decoration:none;156 }157 158 a:hover,a:active {159     color:#599100;160     text-decoration:underline;161 }

  额,数据库出了些问题,被我删删的,暂时没能解决,也就是说我现在在admin站点管理里面不能上传图片和查看图片,额。

  原来的效果是很好的,因为数据库的问题,没能生成display和thumbnail的图片,所以相当与没有图片,现在大体看看吧。

  额,by the way,用photologue的时候没少查它的源码,所以把vim的taglist插件装上真的很重要。推荐几个vim的帖子。

  把VIM打造成一个真正的IDE(1) http://www.vimer.cn/2009/10/%E6%8A%8Avim%E6%89%93%E9%80%A0%E6%88%90%E4%B8%80%E4%B8%AA%E7%9C%9F%E6%AD%A3%E7%9A%84ide1.html

  把VIM打造成一个真正的IDE(2)http://www.vimer.cn/2009/10/%E6%8A%8Avim%E6%89%93%E9%80%A0%E6%88%90%E4%B8%80%E4%B8%AA%E7%9C%9F%E6%AD%A3%E7%9A%84ide2.html

  把VIM打造成一个真正的IDE(3)http://www.vimer.cn/2009/10/%E6%8A%8Avim%E6%89%93%E9%80%A0%E6%88%90%E4%B8%80%E4%B8%AA%E7%9C%9F%E6%AD%A3%E7%9A%84ide3.html

  一键编译单个源文件 http://www.vimer.cn/2009/10/11.html

  磨刀不误砍柴工,改完之后,用起vim来就太舒服了,c文件点F5就编译了,不管是神马文件,只要有函数先F12生成tags,接着F3查看。

  希望别在出神马问题了。

  下一步考虑加上所见即所得的编辑器,而且我还想python+cpp混写一下,试着研究下Boost.Python。

  学无止境啊。

转载于:https://www.cnblogs.com/duoduo369/archive/2012/02/11/2347054.html

我和Django那些事儿(8)----相册django插件photologue,jQuery插件Slides相关推荐

  1. Django Python:完整的BUNDLE + Django真实项目2021

    Django和python Bundle:从学习python的所有基础知识到高级python再到UI设计TKINTER,然后是Django 你会学到: 学习编程的基础知识 学习Python编程语言 学 ...

  2. Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)

    MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...

  3. [django]模板中自定义变量django模板中的变量

    django自定义模板变量 context_processors.py def mysetings(request):return {'NAME': 'maotai'} settings.py TEM ...

  4. django restful 请求_利用 Django REST framework 构建 RESTful Web API

    利用 Django REST framework 构建 RESTful Web API 终于到了动手操作的环节啦,这一节,我们以师生管理系统为例,带领大家搭建一套 framework Web API. ...

  5. php django mysql配置文件_Mysql学习Django+mysql配置与简单操作数据库实例代码

    <Mysql学习Django+mysql配置与简单操作数据库实例代码>要点: 本文介绍了Mysql学习Django+mysql配置与简单操作数据库实例代码,希望对您有用.如果有疑问,可以联 ...

  6. Django 学习(一)Django安装以及初步使用

    刚入门学习Django,目的是希望建立一个属于自己的页面.从零开始,持续学习- 首先要安装好Python----最好安装现流行的Python3.X版本 Python安装好后,安装Django Djan ...

  7. [Django青铜修炼手册] 初识Django

    Django 是用Python开发的一个免费开源的Web框架,可以用于快速搭建高性能,优雅的网站!采用了MVC的框架模式,即模型M,视图V和控制器C,也可以称为MVT模式,模型M,视图V,模板T.在学 ...

  8. linux的django路径,Ubuntu下使用Django搭建前后端分离的全栈项目

    README Ubuntu16.04: Python3.6.2: Django1.11: 开发工具使用了pycharm(Ubuntu): 2017-12-08:更新到留言板 第一步,在Linux环境中 ...

  9. python中如何安装django库_python安装好django库,新建django项目

    我安装好django库之后,想在pycharm里新建django项目,发现没有django选项.百度后发现只有专业版才可以直接创建django项目,社区版推荐用命令创建,如下: 1. 在DOS黑窗口下 ...

  10. python框架django文档_Django基础——Django框架介绍及模板语言

    Django框架,我们只需要关心二点: 1.根据用户访问不同的路径执行不同的函数 2.从HTML读取出内容,并且完成字符串的替换 而socket通信不需要我们自己写: 新建Django项目 命令行创建 ...

最新文章

  1. 媒体智能应用落地靠5G,视频社交需要想象力
  2. JProfiler 11中文版
  3. Arthas | 定位线上 Dubbo 线程池满异常
  4. 3DSlicer22:Module-ExtensionWizard Build Install
  5. Python实训day12pm【答辩要求、定时器】
  6. 使用BeetleX在Linux下部署.NET多站点服务
  7. [SimplePlayer] 2. 在屏幕上显示视频图像
  8. 大数据量分页存储过程效率测试附代码
  9. 解决Docker容器时间与主机不一致问题
  10. Android 系统(229)---OTA
  11. 手机号归属地_【号码归属地查询工具】
  12. pytorch 入门学习使用逻辑斯蒂做二分类-6
  13. 【Android LibGDX游戏引擎开发教程】第06期:图形图像的绘制(下)图片整合工具的使用...
  14. 查找某个数据,找到后把符合条件数据的一行复制到另外一个地方
  15. Linux 脚本删除大于指定大小的文件
  16. MySql explain命令详解
  17. simulink入门
  18. 科技互联网都有啥热点信息?爬取虎嗅5万篇文章告诉你
  19. 1094: 【基础】填词 【循环】
  20. Rhythmbox中mp3中文乱码问题

热门文章

  1. awk分割列 输出时间相关
  2. win8:querySelector()方法
  3. 字符串的切割操作(strtok,split)
  4. C++之函数返回数组
  5. 【POJ】2296 Map Labeler
  6. 问题 D: 自动拨出电话的程序
  7. java8 构造函数引用_java8新特性之方法引用与构造器引用
  8. java判断三位数的范围代码_java判断三位数的实例讲解
  9. python携程使用_简单了解python gevent 协程使用及作用
  10. 今日恐慌与贪婪指数为94 贪婪程度有所上升