[Python #17] [Django #10] 검색 기능에 UI 추가

in SCT.암호화폐.Cryptolast month (edited)

pixabay

검색 기능에 UI를 추가한다. HTML의 form으로 우선 먼저 가볍게 구현해 보자. (깊게 구현할 능력도 안됨ㅎㅎ)

form 추가

먼저 django의 templates 폴더의 base.html 에 form 을 넣는다.

  1. action은 일단 하드코딩으로 /@june0620/search로 한다. 계정명은 변수로 처리하고 싶은데 안된다. ㅠ (#연구필요#장고초짜)
  2. 검색 기능이니 method는 post보다는 get이 나을 것 같다.
  3. input 태그 세 개를 만들고 각각 tags, titles, texts 레이블 추가한다.
      <div>
          <p></p>
          <form action="/@june0620/search/" method="get">
              <label >Tags: </label>
              <input id="tags" type="text" name="tags" value="">
              <label >Titles: </label>
              <input id="titles" type="text" name="titles" value="">
              <label >Texts: </label>
              <input id="texts" type="text" name="texts" value="">
              <input type="submit" value="Search">
          </form>       
      </div>

대충 요런 화면인데 CSS가 없어서 이 모양이다. CSS 공부도 또 해야 하나? ㅠ 일단 기능에만 집중하자. 👇

URL 설정

form의 action으로 받은 url을 urls.py에 설정한다. 이 부분은 변수를 사용할 줄 아니 변수로 처리하자. ㅎㅎ
url 패턴과 매칭 될 경우 views.py의 SearchPosts 클래스를 호출한다.

    path('@<slug:account>/search/', SearchPosts.as_view(), name='search'),

form 파라미터 처리 및 검색

form 에서 전달받은 query string 을 리스트로 전환해야 하는데 split(',') 로 리스트화 및 query 딕셔너리에 추가한다.
UI 단에서 동일 필드에 여러 개 검색어를 입력하고자 할 때 , 로 분리하면 더 많은 결과를 얻을 것이다.
(일시적인 구현이고, 나중에 UI가 바뀌면 다시 구현 필요하다.)

class SearchPosts(ListView):
    template_name = 'album.html'
    context_object_name = 'all_posts'

    def get(self, request, *args, **kwargs):
        query = {
            'tags': request.GET.get('tags').split(','),
            'titles': request.GET.get('titles').split(','),
            'texts': request.GET.get('texts').split(',')
        }
        se = Search(account=kwargs['account'], query=query)
        self.queryset = se.search_posts()
        return super().get(request, *args, **kwargs)

결과

[Cookie 😅]
Python 3.7.4
Django 2.2.4
steem-python 1.0.1
goorm IDE 1.3

Sort:  

[US$18.50](▼39%)[Xiaomi]🚨2020 최신 항바이러스 필터 입고!!🚨 샤오미 공기청정기 필터 / 미에어 필터 / 고효율 정화 / 활성탄 필터 / 포름알데히드 제거 / 고밀도 헤파필터 / 무료배송

WWW.QOO10.COM

@june0620 transfered 1.0 KRWP to @krwp.burn. voting percent : 0.71%, voting power : 77.49%, steem power : 1905744.51, STU KRW : 1200.
@june0620 staking status : 60 KRWP
@june0620 limit for KRWP voting service : 0.12 KRWP (rate : 0.002)
What you sent : 1.0 KRWP
Refund balance : 0.88 KRWP [46691259 - 64b2274c123aa539c4a34a229daa30c07e90ef1d]

俊俊 现在不能自拍自己了… 只能咱们互拍了👏🏻🤝

自拍都限制了?😭
好的,只能互拍了 👏

Coin Marketplace

STEEM 0.15
TRX 0.03
JST 0.026
BTC 11974.11
ETH 372.89
USDT 1.00
SBD 0.99