일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 정보보호병 후기
- PyAmdecoder
- riceteacatpanda
- 인턴 지원
- spring
- reversing.kr
- 네이버 인턴
- Layered Architecture
- JSTL
- Django
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- 소프트웨어 개발보안 경진대회
- SessionAttribute
- mysql
- 메모리 포랜식
- DBMS
- restapi
- Forensic 절차
- 동읍면 DB
- Database
- 행정지역 DB
- webhacking 처음
- 3단계 지역 DB
- frontend
- jsp
- react
- 소개딩
- 방명록 만들기
- 인턴 후기
- EER
- Today
- Total
웹찢남
Django 4일차(TemplateSyntaxError,include,queryset) 본문
TemplateSyntaxError
![](https://blog.kakaocdn.net/dn/c0KR4L/btqGCNFQlNs/pL57jNUk3QjQ9qhscKRHpK/img.png)
현재 vs code를 사용하여 개발하고 있는데 beatifier을 통해 저장했는데
위와 같이 'endwith', expected 'elif', 'else' or 'endif' ~~ 이러면서 태그를 잘못 사용했다고 뜬다...
저장을 하기 전과 후의 차이는 단지 beatifier이 적용이 됐나 안됐나 였는데
자꾸 ctrl s 로 저장을 하면 beatifier가 적용돼서 해결법을 찾느라 고생했다.
명령어 중에 save without formatting이 있는데 이걸 사용해서 저장하면 된다.
ctrl+shift+s가 단축키인데 나는 안돼서 ctrl+shift+p의 명령어 팜플렛 속에서 해당 명령어를 찾아 실행했다.
이렇게 저장을 하니 문제가 해결됐다.
include
전에 짠 코드를 생각해보면 겹치는 코드가 너무 많았다.
가독성을 올리기 위해 여러 방법을 생각해 봤는데 include라는 걸 찾았다.
중복되는 코드를 html 파일 하나에 저장시킨 후 {% include 해당 html %}을 하면 잘 돌아간다.
나의 경우 중복되는 코드속 같은 이름의 변수에 다른 값이 들어가는데 이 또한 아래와 같이 표현하기 보다
{% with a='c' %}
{%include ./123.html %}
{% endwith %}
아래와 같이 코드를 짜는 것이 보기에도 좋고 라인 수 또한 줄어든다.
{% include "./123.html" with a='c' %}
queryset
지금까지 사용한 queryset은 데이터를 읽어오는 즉 select문 하나였다.
이제는 Insert 문을 구현해 보았다. 전에 url을 검색하는 페이지를 만들었는데
이때 검색을 하면 db에 저장할 수 있도록 코드를 구현해 보았다.
템플릿에는 변화가 없고 views.py만 수정을 했다.
views.py
class search_VIEW(View): def get(self, request): return render(request, 'user/search.html') def post(self, request): entry_url = request.POST['url'] if entry_url: try: queryset = Board2.objects.get(url=entry_url) except ObjectDoesNotExist: queryset = False if(queryset): queryset.hits = queryset.hits+1 queryset.save() return render(request, 'user/search.html', {'url': '%s' % entry_url, 'check': 'Exist on DB. It is Phishing site!!!'}) else: fb = Board2(url=entry_url, date=datetime.now(), memo='tmp', hits=1) fb.save() return render(request, 'user/search.html', {'url': '%s' % entry_url, 'check': 'does not Exist on DB. register new data...'}) return render(request, 'user/search.html')
코드를 대충 보면 post로 url을 받으면 우선 db에 해당 url이 있는지 유무를 파악한다.
url이 있을 경우 queryset의 hits를 1 더하고 update를 수행한다.
아니면 url이 존재하지 않을 경우 board2의 모델에 맞는 객체를 생성하여
save를 하게된다. update나 insert나 둘다 save를 사용하여 아주 간단하다는 것을 볼 수 있다.
내일은 달력 위젯을 jqeury 를 통해 구현해 볼 예정이다.
'BACK_END > Django 공부' 카테고리의 다른 글
Django 6일차 (Logger,탬플릿 확장) (0) | 2020.08.15 |
---|---|
Django 5일차 (Datepicker) (0) | 2020.08.14 |
Django 3일차 (with,페이징) (1) | 2020.08.12 |
Django 2일차 (migrate 에러, src image, prototype) (0) | 2020.08.11 |
Django 1일차 (Mysql연동,CBV,login) (1) | 2020.08.10 |