일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- 인턴 후기
- 인턴 지원
- 동읍면 DB
- riceteacatpanda
- PyAmdecoder
- 정보보호병 후기
- 소프트웨어 개발보안 경진대회
- spring
- EER
- Django
- JSTL
- 소개딩
- Layered Architecture
- 방명록 만들기
- 메모리 포랜식
- jsp
- 3단계 지역 DB
- DBMS
- Database
- frontend
- restapi
- webhacking 처음
- mysql
- 행정지역 DB
- Forensic 절차
- SessionAttribute
- ㅁㅇㅂ??ㅇㅈㄷ ㅎㅇㅌ...
- 네이버 인턴
- reversing.kr
- Today
- Total
웹찢남
Django 8일차 (pickle) 본문
pickle을 django에서 사용해보자..
이번에 사용할 피클은 지난번 malicious site detector에서 제작했다
우리가 제작했던 malicious site detector 같은 경우 아주 정확도가 떨어져
이번 프로젝트에서는 포기했다. 지난번의 실수를 생각해보며 phishing site detector을
다른 팀원들이 제작할 예정이다.
어쨋든 pkl,pickle 파일이 있다는 것을 전제로 한번 코드를 짜보자.
views.py
def test2(request): entry_url = request.GET['url_catch'] 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/name.html', {'url': '%s' % entry_url, 'check': 'Exist on DB. It is Phishing site!!!'}) else: vectorizer = pickle.load(open("user/vectorizer.pickle", 'rb')) model = joblib.load('user/grad.pkl') tmp=[] tmp.append(entry_url) X_pre = vectorizer.transform(tmp) New_pre = model.predict(X_pre) fb = Board2(url=entry_url, date=datetime.now(), memo='tmp', hits=1) fb.save() return render(request, 'user/name.html', {'url': '%s' % entry_url, 'check': 'does not Exist on DB. register new data...', 'test': '%s' % New_pre}) context = {'url': 'Empty...', 'check': 'url을 입력하세요'} return render(request, 'user/name.html', context)
코드가 6줄 정도 추가됐다. else문에서 fb가 나오기 전의 코드인데
하나씩 보면 vertorizer.pickle을 로드하여 vectorizer을 선언한다.
또한 model에 학습을 저장한 grad.pkl을 저장한다. 그 후 들어오는 url을 배열화 시키는데
배열화를 안시키고 string 형태로 집어넣으면 에러가 난다.
그 후 vectorizer을 통해 url을 벡터화 한 후 아까 만든 model로 들어온 url에 대해 판단을 한다.
이때 vectorizer.pickle의 경우 makeTokens를 선언해 주어야 하는데
manage.py에 선언을 하면 된다. 나의 경우 따로 파일을 만들어
manage.py에서 해당 함수를 import 했다.
값이 제대로 나오나 확인을 해보았다.
잘된다...ㅠ
삽질을 4시간 정도했는데 에러를 10개 정도 고친 것 같다.
시행 착오가 너무 컸다.
그리고 전에 Ajax 에서 search를 class로 선언했는데
이렇게 하면 post에러가 난다.. 그냥 def로 하고 html에서도 form - method=post가 아니라
form은 그냥 div로 바꾸고 method 같은걸 없애야 ajax가 원활히 돌아간다.
'BACK_END > Django 공부' 카테고리의 다른 글
Django 7일차 (Ajax,Loading) (0) | 2020.08.16 |
---|---|
Django 6일차 (Logger,탬플릿 확장) (0) | 2020.08.15 |
Django 5일차 (Datepicker) (0) | 2020.08.14 |
Django 4일차(TemplateSyntaxError,include,queryset) (0) | 2020.08.13 |
Django 3일차 (with,페이징) (1) | 2020.08.12 |