Django中的相册应用流程
我想知道如何在Django页面上按相册显示图片。目前,我已经学会了在我的HTML文件中使用这一行代码:
<img src="{% static "images/python-logo@2x.png" %}">
结构如下:
/PersonalWebsite
/static
/img
/albums
/album1
img1
/album2
img2
...etc
我想做的是展示几个相册的缩略图,点击后就能显示该相册里的所有图片。我觉得可以通过AJAX请求来实现这个功能。我可能会用标签来给这些照片分类,并给它们起名字和其他特征。这部分工作会在我的models.py
文件中完成(虽然还没完成)。
from django.db import models
from django.contrib import admin
import os
from PersonalWebsite.settings import MEDIA_ROOT
class Album(models.Model):
title = models.CharField(max_length = 60)
def __unicode__(self):
return self.title
def get_image_by_album(self):
images = []
for root, dirs, files in os.walk(os.path.join(MEDIA_ROOT, 'albums', self.title)):
mypath = os.sep.join(os.path.join(root, file).split(os.sep[4:]))
images.append(mypath)
return images
class Tag(models.Model):
tag = models.CharField(max_length = 50)
def __unicode__(self):
return self.tag
class Image(models.Model):
title = models.CharField(max_length = 60, blank = True, null = True)
#image = models.FileField(upload_to = get_upload_file_name)
tags = models.ManyToManyField(Tag, blank = True)
albums = models.ForeignKey(Album)
width = models.IntegerField(blank = True, null = True)
height = models.IntegerField(blank = True, null = True)
created = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.image.name
class AlbumAdmin(admin.ModelAdmin):
search_fields = ["title"]
list_display = ["title"]
class TagAdmin(admin.ModelAdmin):
list_display = ["tag"]
class ImageAdmin(admin.ModelAdmin):
search_fields = ["title"]
list_display = ["__unicode__", "title", "created"]
list_filter = ["tags", "albums"]
admin.site.register(Album, AlbumAdmin)
admin.site.register(Tag, TagAdmin)
admin.site.register(Image, ImageAdmin)
我的“get_image_by_album”函数会遍历相册,并把图片路径添加到“images”列表中。到目前为止,我就做到这些了=/ 我还想设置一个管理后台,这样以后可以更方便地维护网站。我想做一个视图方法,简单地获取图片路径的列表并以这种方式展示。我欢迎任何建议!告诉我你们的想法!我还想建立一个管理界面,这样我就可以手动上传和编辑照片的元数据,不过我会稍后再研究这个。