[오늘의 배움] 038 SQLAlchemy, Flask, Bootstrap

이상민·2021년 1월 29일
0

[오늘의 배움]

목록 보기
41/70
post-thumbnail

1. SQLAlchemy

N:M recursive relationship

i) 동일한 모델과 관계를 갖는 연관 테이블 생성

follow_table = db.Table(
    'follow',
    db.Column('user_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), primary_key=True),
    db.Column('following_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'), primary_key=True)
)

ii) 모델에 관계 추가

following = db.relationship(
    'Users',
    secondary=follow_table,
    primaryjoin=(id == follow_table.c.user_id),
    secondaryjoin=(id == follow_table.c.following_id),
    backref=db.backref('followers')
)

iii) 사용 예

>>> user = Users(...)
>>> user.following
[<Users 1>, ...]
>>> user.followers
[<Users 2>, ...]
  • secondary=follow_table : 연관 테이블 'follow_table' 명시
  • primaryjoin=(id == follow_table.c.user_id): 왼쪽 테이블('Users')과 연관 테이블 조인 조건
  • secondaryjoin=(id == follow_table.c.following_id): 연관 테이블과 오른쪽 테이블('Users') 조인조건

2. Flask request

request.referrer

request.referrer은 요청이 온 URL을 가지고 있다. 하지만 여러 이유들로 인해 클라이언트로부터 보내지지 않을 수도 있다.


3. Bootstrap

<div class="card"
	<a href="#" class="stretched-link"></a>
</div>

카드 <div>안의 <a>태그의 클래스로 설정하여 카드자체를 하이퍼링크로 만들 수 있다. 하지만 카드 내 다른 요소들보다 z-index가 높아 버튼 이용이 불가할 수 있기 때문에 추가로 설정해줘야한다.

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글