Django画廊
我有一个分类模型。我希望每次创建一个类别时,它都会在我的媒体文件夹中创建一个目录。从那里,我希望能够上传到相关的文件夹图像,并有一个画廊在我的类别视图,循环通过每个图像在上述类别目录 category.html models.pyDjango画廊,django,Django,我有一个分类模型。我希望每次创建一个类别时,它都会在我的媒体文件夹中创建一个目录。从那里,我希望能够上传到相关的文件夹图像,并有一个画廊在我的类别视图,循环通过每个图像在上述类别目录 category.html models.py 此代码似乎可以工作,但仅适用于媒体根。我想循环浏览当前类别好的,让我们在您的视图中进行操作 def类别\详细信息\查看请求,slug: 类别=获取对象或类别,段塞=段塞 获取类别图像应位于的绝对路径 category\u imgs\u path=os.path.abs
此代码似乎可以工作,但仅适用于媒体根。我想循环浏览当前类别好的,让我们在您的视图中进行操作 def类别\详细信息\查看请求,slug: 类别=获取对象或类别,段塞=段塞 获取类别图像应位于的绝对路径 category\u imgs\u path=os.path.abspaths.path.join settings.MEDIA\u根目录, 类别.蛞蝓 检查路径是否存在,如果不存在,请创建它 如果不是os.path.isdirectory\u imgs\u路径: os.mkdircategory\u imgs\u路径 images=os.listdircategory\u imgs\u路径 上下文={ 图像:图像, } 返回renderrequest“main/category_detail.html”,上下文 也许最好在取消分类时创建分类图像路径它是创建的而不是查看的,您还没有发布创建取消分类实例的代码,所以,我已经在您的视图中完成了,它应该可以工作 请注意,我添加了get_object_或_404 django快捷方式的用法,以避免出现try/except,docs here->
你应该考虑对图像中列出的内容进行过滤,以确保图像只有使用OS.WAKE、GOLB或类似的东西在该变量中。
希望这能满足您的需求,如果没有,请毫不犹豫地提出要求 如果您是从管理界面创建实例 由于您是从admin接口创建实例,因此可以在ModelAdmin中创建覆盖save_model方法的路径,如下所示: 类类别AdminModelAdmin: ... def save_modelself、请求、obj、表单、更改: category\u imgs\u path=os.path.abspaths.path.join settings.MEDIA\u根目录, 鼻涕虫 检查路径是否存在,如果不存在,请创建它 如果不是os.path.isdirectory\u imgs\u路径: os.mkdircategory\u imgs\u路径 super.save_modelrequest,obj,form,change在你看来,你如何知道你想要展示的是哪一类?您需要一个pk或slug来选择所需的类别first@gabriel我的坏消息是我把函数放错了。我更新了我的帖子。但是你在创建类别时是否正在为该类别创建文件夹?@gabriel不,我没有。也许你可以帮我一下好的,如果你添加代码来创建一个CategoryTank你会很有用的。我使用管理面板中的类别模型创建类别。我让你的代码工作,但就像你说的,它不会创建目录,直到我访问页面。我该如何解决这个问题?
<div class="container">
<div class="row">
{% for image in images %}
<div class="col-md-4">
<a href="/media/{{ image }}"> <img src="/media/{{ image }}" class="img-responsive img-thumbnail" width="304" height="236"/>
</a>
</div>
{% endfor %}
</div>
</div>
def category_detail_view(request, slug):
try:
category = Category.objects.get(slug=slug)
images = os.listdir(settings.MEDIA_ROOT)
context = {
"images": images,
}
except Category.DoesNotExist:
return HttpResponseNotFound()
return render(request, 'main/category_detail.html', context)
class Category(models.Model):
category_title = models.CharField(max_length=200)
category_image = models.ImageField(upload_to="category")
category_description = models.TextField()
slug = models.SlugField(max_length=200, unique=True, default=1)
class Meta:
verbose_name_plural = "Categories"
unique_together = ("category_title", "slug")
def __str__(self):
return self.category_title