Django中的相册应用流程

0 投票
1 回答
519 浏览
提问于 2025-04-18 05:47

我想知道如何在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”列表中。到目前为止,我就做到这些了=/ 我还想设置一个管理后台,这样以后可以更方便地维护网站。我想做一个视图方法,简单地获取图片路径的列表并以这种方式展示。我欢迎任何建议!告诉我你们的想法!我还想建立一个管理界面,这样我就可以手动上传和编辑照片的元数据,不过我会稍后再研究这个。

1 个回答

1

我用django-photologue做了一个非常简单的画廊应用。你可以在这里查看:http://gallery.gentryart.us

撰写回答