create account

[Python #18] [Django #11] form action 변수 적용 (부제: 타인 글 검색) by june0620

View this thread on: hive.blogpeakd.comecency.com
· @june0620 ·
$2.51
[Python #18] [Django #11] form action 변수 적용 (부제: 타인 글 검색)
pixabay
https://cdn.pixabay.com/photo/2019/03/12/20/27/kanban-4051777_1280.jpg

[지난 번 글](https://steempeak.com/hive-101145/@june0620/python-17-django-10-ui)에서 변수 처리할 줄 몰라 하드 코딩한 부분이 있다. 
> action은 일단 하드코딩으로 /@june0620/search로 한다. 계정명은 변수로 처리하고 싶은데 안된다. ㅠ (#연구필요#장고초짜)

내 계정으로 하드 코딩했기 때문에 다른 사람의 글은 검색이 안 되는 불편한 진실을 오늘 수정해본다. action 값에 계정명을 동적으로 넣어야 하는데 계정명을 입력받는 곳은 현재 URL밖에 없으니 URL에서 계정명만 추출해야 한다. 다행히 `{{ request.path }}`로 현재 접속 중인 URL을 가져올 수 있는 듯하다. Template filters로 URL에서 계정명만 추출하면 되겠다.

##### templatetags 
templatetags 폴더 > post_extras.py에 필터를 하나 등록한다. URL을 인자로 받아 계정 추출하는 함수를 쓸 건데 정규 표현식을 동원해야 할 것 같은 느낌이 팍 온다. 아~~ 정규 표현식 모르는데... ㅠㅠ 
인터넷에서 여러가지 방법 시도해 보다 가장 무난한 방법으로 가보자. 
참고로 이런 정규식 체크 페이지도 있다. 
https://regex101.com/r/cO8lqs/4
```
import re
...
...

@register.filter
def get_account_form_url(path: str):
    account = re.search(r'@[a-z0-9-.]*', path)
    print(path)
    print(account.group(0))
    return account.group(0) if account else None
```
<p>

![](https://cdn.steemitimages.com/DQmdCAPzAmj4PnJLtWxLSTpgxbU1ZystDbc2E1PYcD6MNkS/image.png)

##### base.html
이제 base.html 상단에 필터를 load 하고, form action에 필터를 적용하면 되겠다. 

```
{% load post_extras %}
...
...

          <form action="/{{ request.path | get_account_form_url }}/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>  
```
<p>

![](https://cdn.steemitimages.com/DQmcQzKTGkiSocuYPrwYPJ3KXvc92ZtnxYWsRANkzK5mc7k/image.png)

##### 결과
 
이제 @gghite 님의 영화 리뷰를 검색해서 볼 수 있다. ㅎ
![](https://cdn.steemitimages.com/DQmQxiYpbdjy5Sqzt9pHMBg3Dzb83R2z2EV378DC7mYMYww/image.png)

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

참고한 글:
https://medium.com/@chrisjune_13837/%EC%A0%95%EA%B7%9C%EC%8B%9D-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-%EC%98%88%EC%A0%9C%EB%A5%BC-%ED%86%B5%ED%95%9C-cheatsheet-%EB%B2%88%EC%97%AD-61c3099cdca8
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
properties (23)
authorjune0620
permlinkpython-18-django-11-form-action
categoryhive-132971
json_metadata{"app":"peakd/2020.09.1","format":"markdown","tags":["kr","dblog","dev","django","whalepower","palnet","python","goorm"],"users":["june0620","register.filter","gghite","chrisjune"],"links":["https://steempeak.com/hive-101145/@june0620/python-17-django-10-ui","https://regex101.com/r/cO8lqs/4","/@gghite","https://medium.com/@chrisjune_13837/%EC%A0%95%EA%B7%9C%EC%8B%9D-%ED%8A%9C%ED%86%A0%EB%A6%AC%EC%96%BC-%EC%98%88%EC%A0%9C%EB%A5%BC-%ED%86%B5%ED%95%9C-cheatsheet-%EB%B2%88%EC%97%AD-61c3099cdca8"],"image":["https://cdn.pixabay.com/photo/2019/03/12/20/27/kanban-4051777_1280.jpg","https://cdn.steemitimages.com/DQmdCAPzAmj4PnJLtWxLSTpgxbU1ZystDbc2E1PYcD6MNkS/image.png","https://cdn.steemitimages.com/DQmcQzKTGkiSocuYPrwYPJ3KXvc92ZtnxYWsRANkzK5mc7k/image.png","https://cdn.steemitimages.com/DQmQxiYpbdjy5Sqzt9pHMBg3Dzb83R2z2EV378DC7mYMYww/image.png"]}
created2020-09-10 12:15:15
last_update2020-09-10 12:15:15
depth0
children0
last_payout2020-09-17 12:15:15
cashout_time1969-12-31 23:59:59
total_payout_value1.322 HBD
curator_payout_value1.183 HBD
pending_payout_value0.000 HBD
promoted0.000 HBD
body_length2,164
author_reputation118,592,211,436,406
root_title"[Python #18] [Django #11] form action 변수 적용 (부제: 타인 글 검색)"
beneficiaries[]
max_accepted_payout1,000,000.000 HBD
percent_hbd0
post_id99,552,633
net_rshares10,130,534,893,507
author_curate_reward""
vote details (49)