用Django创建一个照片墙网站

news/2024/5/20 1:09:34/文章来源:https://blog.csdn.net/qq123aa2006/article/details/88930719

-0- 使用到的资源:

  • 前端: Blueimp Gallery
  • 后端: Django
  • 缩略图: easy_thumbnails
  • 部署: nginx + gunicorn + supervisor
  • 开发环境是Centos 7.2 + Python 2.7.5

上个图先:

界面
效果预览

-1- 创建项目

假设当前用户是ljgabc,当前目录是/home/ljgabc

virtualenv django
source django/bin/activate
pip install django pillow easy_thumbnails gunicorn
django-admin startproject websites
cd websites
python manage.py startapp gallery

-2- 修改配置

首先修改websites/settings.py中的INSTALLED_APPS,添加应用,

INSTALLED_APPS = [...,'gallery.apps.GalleryConfig','easy_thumbnails',
]

其它配置如下:

  • 图片文件上传位置: gallery/uploads
  • 图片访问地址: <siteurl>/uploads/xxxx.jpg
  • 缩略图大小为75x75
  • 最终静态文件存放地址为static/
    因此修改websites/settings.py,添加以下内容,
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

MEDIA_ROOT = os.path.join(BASE_DIR, ‘gallery’)
MEDIA_URL = ‘/’
IMAGE_PREFIX = ‘uploads’

THUMBNAIL_ALIASES = {
‘’: {
'‘avatar’ : {‘size’: (75,75), ‘crop’:True},
},
}

-3- 配置URL

由于我们的网站只有一页,所以需要配置的URL只有//admin/uploads,修改websites/urls.py,配置如下:

import os
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
url(r’^admin/’, admin.site.urls),
url(r’^$’, include(‘gallery.urls’)),
]

urlpatterns += static(settings.IMAGE_PREFIX, document_root=os.path.join(settings.MEDIA_ROOT, settings.IMAGE_PREFIX))

添加gallery/urls.py,

from django.conf.urls import url
from . import views

urlpatterns = [
url(r’^$’, views.gallery, name=‘gallery’),
]

-4- 添加模型

编辑gallery/models.py,添加Image模型,

from django.db import models
from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible

# Create your models here.

@python_2_unicode_compatible
class Image(models.Model):
‘’’
模型包含Title、文件、创建时间等
‘’’

title = models.CharField(max_length=250, blank=True)
original = models.ImageField(upload_to=settings.IMAGE_PREFIX, default=’/tmp/none.jpg’)
created = models.DateTimeField(auto_now_add=True)

<span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">__str__</span><span class="hljs-params">(self)</span>:</span><span class="hljs-keyword">return</span> self.title

-5- 添加视图

编辑gallery/views.py,配置视图,

from django.shortcuts import render
from .models import Image
# Create your views here.

def gallery(request):
image_list = Image.objects.all()
return render(request, ‘gallery/index.html’, {
‘image_list’: image_list
})

-6- 添加静态文件

从网上下载Blueimp Gallery文件,将其中的cssimgjs文件夹放入gallery/static/gallery/文件夹下。

-7- 添加首页模板

创建gallery/templates/gallery/index.html,内容如下:

{% load static %}
{% load thumbnail %}
<!DOCTYPE html>
<html lang="zh-cn"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Photo Gallery</title><link rel="stylesheet" href="{% static '/gallery/css/blueimp-gallery.min.css' %}"><link rel="stylesheet" href="{% static '/gallery/style.css' %}"></head><body><!-- The Gallery as lightbox dialog, should be a child element of the document body --><div id="blueimp-gallery" class="blueimp-gallery blueimp-gallery-controls"><div class="slides"></div><h3 class="title"></h3><a class="prev"></a><a class="next"></a><a class="close">×</a><a class="play-pause"></a><ol class="indicator"></ol></div><div id="links" class="image-gallery">{% if image_list %}{% for image in image_list %}<a href="{{ image.original.url }}" title="{{ image.title }}"><img src="{{ image.original.avatar.url  }}" alt="{{ image.title }}"></a>{% endfor %}{% endif %}</div><script src="{% static '/gallery/js/blueimp-gallery.min.js' %}"></script><script>document.getElementById('links').onclick = function (event) {event = event || window.event;var target = event.target || event.srcElement,link = target.src ? target.parentNode : target,options = {index: link, event: event},links = this.getElementsByTagName('a');blueimp.Gallery(links, options);};</script></body>
</html>

-8- 初始化

python manage.py makemigrations gallery
python manage.py migrate
python manage.py createsuperuser

-9- 预览

python manage.py runserver 0.0.0.0:8000

-10- 配置supervisor

yum install supervisor

创建/etc/supervisor.d/gallery.ini, 添加以下内容:

[program:gallery]
command=/home/ljgabc/django/bin/gunicorn websites.wsgi:application
directory=/home/ljgabc/websites
user=ljgabc
autostart=true
autorestart=true

启动supervisor,

systemctl start supervisor
# supervisorctl start gallery

此时访问127.0.0.1:8000应该可以看到应用已经启动。

-11- 配置nginx

首先将所有用到的静态文件收集到STATIC_ROOT目录下,

python manage.py collectstatic

创建/etc/nginx/conf.d/gallery.conf,

server {listen 80;server_name www.your-domain-name.com;
location / {proxy_set_header X-Real-IP $remote_addr;proxy_set_header Host $http_host;proxy_pass http:<span class="hljs-comment">//127.0.0.1:8000;</span>
}location /<span class="hljs-keyword">static</span>/ {root /home/ljgabc/websites;
}

}

启动nginx

systemctl start nginx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_865870.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个礼拜学完前端,获得前端证书,并写出一个商城网站的

前端技术最近几年一直火爆&#xff0c;不会点前端技术&#xff0c;都不敢说自己是个优秀的程序员&#xff0c;即便你是做Java后台&#xff0c;亦或者C#、Python。 当你折腾了很久的后台&#xff0c;再去研究前端的时候&#xff0c;发现前端真的是小儿科&#xff0c;虽然前端技术…

边学边搭建个人网站

网络上搭建个人网站的教程不少&#xff0c;但是都比较零散。自己一个人鼓捣鼓捣&#xff0c;也开始上路了。 搭建个人网站的基本步骤如下&#xff1a; 1.申请域名 2.购买服务器 3.在服务器上配置环境 4.将自己的本地网页上传到云服务器 1.申请域名 这一步我没有尝试&#xff0…

网络安全系列连载(4)网站服务器与数字证书

由于Windows NT系统的容易维护&#xff0c;很多单位或者ISP都采用它&#xff0c;大部分是做WEB服务器使用。虽然IIS存在很多新的漏洞和安全问题&#xff0c;但只要我们做好合理的安全配置&#xff0c;还是可以避免很多安全隐患的。因此&#xff0c;本文选择IIS服务器来测试数字…

Google 联合一些社交网站来对抗 facebook

谷歌 (Google) 将与其它一些行业领先的社交网站联手&#xff0c;共同对抗互联网新贵Facebook。  谷歌将于周四推出一个通用标准集 ( OpenSocial )&#xff0c;允许软件开发者为谷歌旗下社交网站Orkut&#xff0c;以及LinkedIn、hi5、Friendster、Plaxo和Ning等其它社交网站…

CSDN 未来网站内容Tag架构猜想

大概是上周吧&#xff0c;写了一篇blog主观的分析了一下CSDN目前的内容架构&#xff0c;收到许多朋友好的意见和建议&#xff0c;在此首先对他们表示感谢。网络变化真的很快&#xff0c;现在的网站内容架构较2&#xff0c;3年前已经有翻天覆地的变化。很多人也提出了“如今的网…

php 网站添加高防ip

最近做的游戏抽奖平台一直被流量攻击&#xff0c;网址使用的阿里云的服务器&#xff0c;小项目但是阿里的高防2w多实在用不起。只好找的其他平台的&#xff0c;这里推荐个平台挺便宜的:https://www.yisu.com 购买成功后&#xff0c;两个平台都需要添加白名单&#xff1b;高防ip…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想&#xff0c;能把百度的数据放进数据库&#xff0c;用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步&#xff0c;利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

SEO 比比看: Che168.com VS pcauto.com.cn

SEO 比比看&#xff1a; Che168.com VS pcauto.com.cn 做SEO工作&#xff0c;平常少不了多观察各种网站优化的案例。俗话说的好&#xff0c;懂行的看门道&#xff0c;不懂的看热闹。面对五花八门的网站&#xff0c;如何才能从专家的角度&#xff0c;以最快的速度来了解被观察…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂&#xff1a;一边搜索&#xff0c;一边看PageRank 下载地址&#xff1a;多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用&#xff0c;回复和我讨论了我的结论。有赞成的&#xff0c;有反对的&#xff0c;有鼓励的…

实际采用 FleaPHP 的网站

下面都是采用 FleaPHP 框架开发的网站列表&#xff0c;如果发现无效连接请在留言。 如果你有采用 FleaPHP 开发的网站&#xff0c;并且愿意公开网址&#xff0c;可以发邮件到 dualface (at) gmail.com 需要提供的信息包括网站名称和连接地址&#xff0c;以及简单的介绍文字。 云…

Nginx网站服务(从新手村到小有成就5)

Nginx网站服务 相关软件包自习到官网下载 一、关于Nginx 一款高性能、轻量级Web服务软件 稳定性高 系统资源消耗低 对HTTP并发连接的处理能力高 单台物理服务器可支持30000~50000个并发请求 二、编译安装Nginx服务 1、关闭防火墙将nginx所需软件包到/opt目录下 systemctl stop…

电信网通证实台湾地震影响内地访问国际网站(12月27日)

电信网通证实台湾地震影响内地访问国际网站 http://www.sina.com.cn 2006年12月27日 09:39 东方网 中国国际海底光缆网络 中美六家运营商正在共同建设连接中国和美国的兆兆级海底光缆系统——跨太平洋直达光缆系统 东方网讯 12月27日消息&#xff0c;从今日凌晨起&#xff0c…

实际采用 FleaPHP 的网站

下面都是采用 FleaPHP 框架开发的网站列表&#xff0c;如果发现无效连接请在留言。 如果你有采用 FleaPHP 开发的网站&#xff0c;并且愿意公开网址&#xff0c;可以发邮件到 dualface (at) gmail.com 需要提供的信息包括网站名称和连接地址&#xff0c;以及简单的介绍文字。 云…

在线加密解密网站(对称加密:AES、DES、RC,非对称加密:RSA)

前两天写AES加密相关代码&#xff0c;学习的同时找到一个在线加密解密的网站&#xff0c;帮助自己快速理解了一下&#xff0c;推荐给学习加密的同学。在线加密网站&#xff0c;一开始接触加密&#xff08;AES等&#xff09;可以在这里体验下加密与解密&#xff0c;助于快速理解…

seo优化:把百度放进数据库

seo优化:把百度放进数据库 有时候我想&#xff0c;能把百度的数据放进数据库&#xff0c;用广大程序员熟悉的sql语句查询百度的搜索结果应该是一个不错的主意。在这方面Google早已经跨出了一大步&#xff0c;利用Google Search API 把Google的搜索结果放进数据库是很容易办到得…

搜索引擎SEO外挂:一边搜索,一边看PageRank

搜索引擎SEO外挂&#xff1a;一边搜索&#xff0c;一边看PageRank 下载地址&#xff1a;多么乐站长工具 我原来曾写过一篇统计分析搜索引擎排名和Page Rank 关联分析 的文章。很多人引用&#xff0c;回复和我讨论了我的结论。有赞成的&#xff0c;有反对的&#xff0c;有鼓励的…

邀请PHP开发工程师加盟Web3.0新锐网站[工作地点-北京财智国际大厦]

我们的大方向是&#xff1a; 如何更快、更准地帮助用户找到他所需要的信息。这也就是以前搜索引擎诞生的原因。但搜索引擎仅仅是一种解决办法&#xff0c;而且还远不完美。这将是我们致力的方向。我们的两个理念是&#xff1a; 按主题重组织全网内容&#xff1b; 按人…

郑昀邀请网站开发工程师架构师加盟Web3.0新锐网站[工作地点-北京财智国际大厦]

公司新年新气象&#xff0c;刚刚换到了一个大办公室&#xff0c;也离中关村更近了。随着公司规模的扩大&#xff0c;开始了新一轮的招兵买马&#xff0c;哈哈。请各位帮忙看看有没有合适的人选推荐&#xff0c;不胜感谢&#xff01; 招聘:研发部 招聘岗位1&#xff1a;PHP网站架…

网站制作流程及界面交互设计

网站制作流程及界面交互设计研究探讨 作者的blog: http://www.onling.net/blog/ 很多朋友希望&#xff0c;我能把我做网站的一些流程及经验跟大家分享一下&#xff0c;最近刚好做一次内部培训&#xff0c;所以稍微整理了一下&#xff0c;这些只是针对网页初学者&#xff0c;具…

从LiveJournal后台发展看大规模网站性能优化方法

一、LiveJournal发展历程 LiveJournal是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个应用&#xff0c;以实现以下功能&#xff1a; 博客&#xff0c;论坛 社会性网络&#xff0c;找到朋友 聚合&#xff0c;把朋友的文章聚合在一起LiveJournal采用了大量的开源…