Django P1으로 구축된 리테일 웹사이트 (2020-02-04)
장고:
템플릿 내장!!!
매우 유용함template shortcuts, tags and many more...
클래스 기반 보기: 일반 보기
학습 소스:
codingforentrepreneurs
generic views official documentation
폴더를 반복하려면
StackO: iterate through a static image folder in django :
This isn't something Django has built in. But Django is just Python, and you can use normal Python file functions to get your list in the view:
files = os.listdir(os.path.join(settings.STATIC_ROOT, "styles/jamia"))
쿼리셋에서 필터링
무엇을 찾아야 하는지 알고 있을 때:
category_handbags = Category.objects.filter(name='Handbags')
추가 읽기: Database Functions* 필터()
By using filter(), we can retrieve a QuerySet of just those books that were published within the last 90 days period, like so:
from datetime import datetime, timedelta Book.objects.filter(date_published__gte=datetime.now() - timedelta(days=90)).count() # __isnull Book.objects.filter(author__isnull=True).count() # __exact Book.objects.filter(title__exact='').count()
* 제외()
if we use the exact same date_published example above but swap out filter() for exclude(), we’d expect the resulting book count to be the inverse: from 3 of 20 to now 17 of 20:
from datetime import datetime, timedelta Book.objects.exclude(date_published__gte=datetime.now() - timedelta(days=90)).count() # combining filters Book.objects.exclude(author__isnull=True).exclude(title__exact='').count()
category.count() 대 len(카테고리)
len()
메모리의 모든 데이터를 로드한 다음 계산을 수행합니다.count()
는 일반적으로 데이터가 미리 로드되지 않은 경우 더 빠릅니다.categories.first().count()
와 같은 쿼리 세트 관리자가 AttributeError
프롬프트를 표시하지 않도록 주의하십시오. 그러나 categories.first().subcategory_set.count()
는 하위 범주의 수를 정확하게 알려주며 len(categories.first().subcategory_set.all())
와 동일합니다. 보시다시피 모든 하위 범주를 읽어 길이를 계산합니다.Django - 이미지:
이미지 필드
모델에
ImageField
를 추가하고 데이터베이스의 이미지를 웹에 로드하려면:참조: William Vincent
참조: GeeksforGeeks
잘못된 방향으로 업로드된 이미지:
휴대폰으로 찍은 사진에는 때때로 이 문제가 있는데, Giovanni의 post이 문제를 해결했습니다.
from django.db.models.signals import post_save
from django.dispatch import receiver
from PIL import Image, ExifTags
from django.db import models
import os
class Item(models.Model):
name = ...
class ItemImage(models.Model):
item = models.ForeignKey(Item)
image = models.ImageField(upload_to='itemimages', null=True, blank=True)
# solves the problem that uploaded images are in wrong orientation
def rotate_image(filepath):
try:
image = Image.open(filepath)
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation] == 'Orientation':
break
exif = dict(image._getexif().items())
if exif[orientation] == 3:
image = image.rotate(180, expand=True)
elif exif[orientation] == 6:
image = image.rotate(270, expand=True)
elif exif[orientation] == 8:
image = image.rotate(90, expand=True)
image.save(filepath)
image.close()
except (AttributeError, KeyError, IndexError):
# cases: image don't have getexif
pass
@receiver(post_save, sender=ItemImage, dispatch_uid="update_image_item")
def update_image(sender, instance, **kwargs):
if instance.image:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
fullpath = BASE_DIR + instanc.image.url
rotate_image(fullpath)
추가 읽기: FIX UPLOADED IMAGES IN PYTHON WEBAPPS
이미지 파일의 이미지 파일은 삭제되지만 파일은 MEDIA 폴더에 남아 있습니다.
Cleanup Files (and Images) On Model Delete in Django
참조: 온라인 소매 웹사이트
asos : 항목 표시 스타일, 분류 필터링, 가장 반응이 빠른 항목에서 가장 많이 참조됨
LOUIS VUITTON : 문구는 가장 우아하고 스타일은 미니멀하게
BOTTEGA VENETA : 랩탑에서 충분히 반응하지 않음
ACCESSORIZE LONDON : 랩탑에서 충분히 반응하지 않음
KUPIVIP : 저렴해 보인다
장고 부트스트랩4
컨테이너, 행 및 열
컨테이너 및 그리드examples
col-sm-12
: 페이지 너비가 '작은' 경우 12열을 차지합니다.col-md-6
: 페이지 너비가 '중간'인 경우 6열을 차지합니다.col-lg-4
: 페이지 너비가 '큰' 경우 4열을 차지합니다.col-4
: 다른 규칙이 적용되지 않는 한 항상 4열을 차지합니다.col-md-auto
: 페이지 너비가 '중간'인 경우 남아 있는 모든 열을 차지합니다.기본 그리드 설정: docs/4.4/layout/grid
$grid-columns: 12;
$grid-gutter-width: 30px;
$grid-breakpoints: (
xs: 0, // Extra small screen / phone
sm: 576px, // Small screen / phone
md: 768px, // Medium screen / tablet
lg: 992px, // Large screen / desktop
xl: 1200px // Extra large screen / wide desktop
);
$container-max-widths: (
sm: 540px,
md: 720px,
lg: 960px,
xl: 1140px
);
간단히 파이썬:
사전을 반복하려면:
dict.keys() 메서드 및 dict.items() 메서드
# using dict.keys() method
D1 = {1:'a', 2:'b', 3:'c'}
for key in D1.keys():
print(k, D1[k])
# 1 a
# 2 b
# 3 c
# using dict.items() method
for key, value in D1.items()
print(key, value)
# same result
Reference
이 문제에 관하여(Django P1으로 구축된 리테일 웹사이트 (2020-02-04)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ld8/daily-notes-retail-website-in-russian-p1-2020-02-04-n20텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)