如何解决我需要在HTML模板中显示基于类型的绘画
我正在做一个美术画廊的项目,并且根据每种绘画类型有不同的页面,例如。印象派,超现实主义等
我复制了所有绘画模板,并想对其进行修改,使其仅显示选定的流派。
这是我的all_paintings视图
def all_products(request):
"""a view to show all products including search"""
products = Painting.objects.all()
products = Painting.objects.filter(genre__name='genre')
for p in products:
print(p)
context = {
'products': products,}
return render(request,'products/paintings.html',context)
Id想知道是否可以向现有的类中添加上述过滤器,或者创建一个全新的类?
以及我要添加到HTML模板中的内容,以便显示特定类型的绘画
解决方法
例如:
- 过滤器:
import pandas as pd
from datetime import datetime
# get the date string
datestring = datetime.strftime(datetime.now(),'%d-%b')
# read archive
arch = pd.read_csv('archive.csv')
# rename columns
arch.rename(columns={'date': 'email'},inplace=True)
# read working,but only the two columns that are needed
working = pd.read_csv('working.csv',header=None,usecols=[1,3])
# rename columns
working.rename(columns={1: 'email',3: datestring},inplace=True)
# only emails greater than 30 or already in arch
working = working[(working[datestring] > 30) | (working.email.isin(arch.email))]
# merge
arch_updated = pd.merge(arch,working,on='email',how='outer').fillna(0)
# save to csv
arch_updated.to_csv('archive.csv',index=False)
# display(arch_updated)
email 01-sep 27-Aug
asdf@email.com 154.0 31.0
fsda@email.com 128.0 19.0
qwer@gmail.com 77.0 92.0
ffff@xmail.com 63.0 0.0
zxcv@email.com 0.0 117.0
- 提出HTML表示法的问题: 是的,可以通过诸如jinja2之类的框架或html渲染包来实现。检查一下。
假设您有一个单独的模型Genre,并且带有一个Slug字段,那么我将设置一个单独的URL和视图来处理类型。
例如在urls.py中添加以下内容:
path('products/<slug:genre_slug>',views.genre,name='genre')
在views.py中:
from django.shortcuts import get_object_or_404
def genre(request,genre_slug):
genre = get_object_or_404(Genre,slug=genre_slug)
products = Painting.objects.filter(genre=genre)
context = {
'products': products,'genre': genre
}
return render(request,'products/genre.html',context)
然后在模板中,起点将是:
<h1>Products in {{ genre.name }} genre</h1>
{% for product in products %}
{{ product.title }}
{% endfor %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。