다른 커뮤니티에서 gulp 랑 browser-sync 를 엮어서 파일 변경 시에 자동 re

 
Chinseok Lee

다른 커뮤니티에서 gulp 랑 browser-sync 를 엮어서 파일 변경 시에 자동 reload를 수행하는 데, html 파일에서 태그가 없어서 자동 reload 가 수행안되는 이슈가 있었는데요. // body 태그를 찾아서 관련 js script 를 추가하는 데, body 태그가 없으니 관련 js script 가 추가가 안 되었던 겁니다.

예전 django-debug-toolbar 를 쓸 때에도, 비슷한 이슈가 있어서 공유해봅니다.

django-debug-toolbar 를 템플릿에 body 태그가 꼭 있어야 합니다. body 태그를 찾아서, 관련 코드를 추가하거든요. body 태그가 없으면 toolbar 패널이 보이지 않아요.

이 설정은 DEBUG_TOOLBAR_CONFIG 에서 INSERT_BEFORE 설정이구요. 디폴트 설정은 “” 입니다.

http://django-debug-toolbar.readthedocs.org/en/latest/configuration.html

안녕하세요 공모전에 처음 나가면서 파이썬, 나아가 장고를 모두 처음써보게 된 학생입니다.

 
최준석

안녕하세요

공모전에 처음 나가면서 파이썬, 나아가 장고를 모두 처음써보게 된 학생입니다.

질문이 있는데… 장고를 가지고 웹앱을 만드려고 합니다. 헌데,

프론트 부분을 어떻게 해야할지 감이 잘 안오네요…

장고에서 지원해주는 form 부분을 활용하고 싶은데,

프론트 부분을 따로 만들면 form과 form이 가지고 있는 함수들을 모두 못쓰게

될 것 같은데 다른 대안이나, 좋은 방법 있는지 의견을 듣고싶습니다!!

  • Chinseok Lee

    django form 은 다음 2가지 역할을 합니다.
    1. 지정된 fields 들에 대해 widgets render
    2. 입력된 fields 값들에 대해 validation 수행

    프론트부분을 따로 코딩하시어 #1 기능을 쓰지 않으시더라도, #2 기능을 쓰실 수는 있습니다.

    문현철

    Html 테그의 네임을 form필드와 동일 하게 만드시면 동일하게 사용 가능합니다.

https://www.djangoproject.com/weblog/2015/sep/23/d

 
Chinseok Lee

https://www.djangoproject.com/weblog/2015/sep/23/django-19-alpha-1-released/

올해 중에는 정식버전이 나오겠네요.

릴리즈 노트 : https://docs.djangoproject.com/en/dev/releases/1.9/

LoginRequiredMixin 이 이제서야 정식지원이 되는 군요. 🙂

자꾸 안되는 부분에 관한 질문을 올려서 죄송합니다 ㅠㅠ Django 1.7에서 로그인을 만

 
신영원

자꾸 안되는 부분에 관한 질문을 올려서 죄송합니다 ㅠㅠ
Django 1.7에서 로그인을 만드는 도중에 template에서 is_authenticated를 사용하는데 shell에서 is_authenticated로 로그인을 하면 true로 잘 반환이되는데 템플릿에서만 바뀌지 않네요. 그래서 여기저기 프린트를 찍어보았는데 템플릿제외 모든부분에서 잘 작동이 되는데 왜 템플릿에만 가면 is_authenticated가 false를 반환하는걸까요?
아래는 코드사진입니다

  • Enoch Lee

    settings.py에 TEMPLATE_CONTEXT_PROCESSORS에 “django.core.context_processors.request”가 포함되어있는지 확인하시고 template에서 {{ request.user.is_authenticated }}로 해보세요.

    신영원

    음 template_context_processors는 포함되어있는데 {% if request.user.is_authenticated %}는 똑같이 안되고 {{ request.user.is_authenticated }}가 되면 else는 어떻게 하는지모르겟네요..

    Enoch Lee

    view의 main 에서 Context({…})를 RequestContext(request, {…}) 으로 바꾸고 한번 시도 해보세요.
    템플릿에서는 {% if request.user.is_authenticated %} 로 사용하시면 됩니다.

    신영원

    알려주신 방법대로 해결했습니다. 도와주셔서 감사합니다!

    Chinseok Lee

    render shortcuts 을 쓰시면, 코드가 보다 간결해집니다.

    return render(request, ‘main.html’, {
    ‘join_form’: JoinForm(),
    ‘login_form’: LoginForm(),
    })

    신영원

    오 꿀팁 감사합니다

DB 실행계획도 안 까보고 장고 느리다고 궁시렁 거린 자신을 반성합니다. 파이썬은 적당하게

 
Seungho Kim

DB 실행계획도 안 까보고 장고 느리다고 궁시렁 거린 자신을 반성합니다. 파이썬은 적당하게(?) 느려 성능에 대해 항상 고민하게하는 점이 참 좋습니다 ㅋㅋ

  • Kenial Sookyum Lee

    일단은 개발하고 보는거죠 (…)

    JeongHwan Kim

    제가 겪은 파이썬이 느리다고 할만할 때는
    64G 의 사진들을 분석해서 얼굴 찾을 때나…
    프로그램을 잘못 짜서 하위 폴더의 전체 경로 찾는데 오만가지 모듈을 로딩한다가나(경험담…)

    다양한 경험이 있지만 결국은 대부분 다른 언어로 짜도 느릴만하게 짰을 경우나,
    초기 로딩이 정말 빨리 되서 반복 되어야 하는 경우는 (bash 에서 루프를 돌리거나) 오래걸리더라구요

    하지만 일단 개발하고 본다는 개념에서 따지면 개발이후 성능은 잡아갈 수 있더라구요
    (아주 대부분의 경우 그렇다는 것이고, 아닌 경우도 많을 수 있다는 이야기죠…)

    Seungho Kim

    성능이 완전 좋으면 그냥 생각없이 짤텐데. 적당히 느리니까 효율적으로 생각해서 프로그래밍하게 되더라구여 ㅋㅋㅋ

    Kenial Sookyum Lee

    그리고 개발 중에는 db쪽 로그 옵션을 켜서, 개발 서버에서 db 접근하는 코드가 실행될 때마다 해당 sql statement가 콘솔로 출력되도록 설정해 놓으시길 권장합니다. 별 것 아니지만, django ORM의 매직으로 쿼리가 망한(…) 케이스를 추적할 때 매우 유용합니다.

    ※ 이미 하고 계시다면 낭패

    Seungho Kim

    저는 망할때만 .query 로 망한걸 찾습니다 ㅋㅋㅋㅋ 어차피 db first 환경이라 망해봐야 ㅋㅋ

    Donghyun Cho

    이미 아시겠지만.. django debug toolbar 쓰시면 쿼리 쉽게 볼 수 있어요. 저는 콘솔로그로 찍지만.. 🙂
    어플리케이션 성능의 90프로는 디비 모델링과 쿼리에서 좌우한다고 생각해요. select_related 와 prefetch_related만 잘 써도 성능 올라가고.. 캐쉬 등등 많은 옵티마이제이션 방법들이 있어서..
    저는 미쳐 장고가 느리다고 생각해본적이 없네요. ㅠ.ㅠ 그냥 대충 만족하고 있었나봐요.

    박영록

    쿼리가 느리면 C로 짜도 마찬가지긴 하죠 ㅎㅎ

django에서 DB랑 어드민이랑 뭐가 안맞는것 같네요 일단 DB시간하고 장고시간을 체크

 
공대영

django에서 DB랑 어드민이랑 뭐가 안맞는것 같네요

일단 DB시간하고 장고시간을 체크해봤는데 둘다 지금시간이랑 정확합니다

시간 필드는 models.DateTimeField 인데요

DB에서 새컬럼을 만들땐 지금시간이랑 똑같은데 장고 어드민에서 열면 약 9시간이 앞서있습니다

그반대로 어드민에서 만들고 DB에서 열어도 9시간 차이가 나있습니다

일단 어드민만 쓰면 별문제는 없을것 같은데 언젠간 문제가 터질것 같아요

무슨이유일까요?


  • Park Hyungbum

    쟝고는 잘 모르지만 보통 시간 관련하여 9시간 차이나는 이슈가 있으면 timezone관련된 부분을 살펴보시면 됩니다.

    공대영

    박형범 둘다 Asia/Seoul 되어있고 둘다 생성할때는 시간이 정확해요. 그런데 DB에서 만들고 어드민에서 확인하거나 어드민에서 만들고 DB에서 확인하면 9시간 차이가 나있어요

    KwangYoun Jung

    공대영님, 잘은 모르겠지만.. db 는 어떤 걸 사용하고 있나요?!

    공대영

    정광윤 mariaDB를 사용하고있습니다. 플랫폼은 윈도우고 컬럼삽입할때 지금시간도 잘들어가네요

    Hyunil Kim

    DB 자체 Timezone 확인 해보세요

    KwangYoun Jung

    장고로 개발한 건 이니지만 예전에 오라클로 개발할 때 비슷한 문제가 있었는데 db timezone 혹은 플랫폼 timezone 에 문제가 있었던 적이 있었어요.

    공대영

    DB도 지금시간이에요

    KwangYoun Jung

    오마나 별일이세…

    Hyunil Kim

    DB에서 디스플레이 되는 시간 말구요. 자체에 Timezone 세팅이 있어요. 장고에서 불러오면서 타임존이 틀리면 컨버팅을 해서 줄거에요…

    Hyunil Kim

    mysql> SELECT @@global.time_zone, @@session.time_zone;

    Park Hyungbum

    개인적인 추측인데요. django 문서를 보면 https://docs.djangoproject.com/en/1.8/topics/i18n/timezones/ 이런 내용이 있는데
    When support for time zones is enabled, Django stores datetime information in UTC in the database, uses time-zone-aware datetime objects internally, and translates them to the end user’s time zone in templates and forms.
    django는 DB에 저장된 값을 UTC라고 판단하고 +9를 해서 뿌려주는게 아닐까요?

    공대영

    확인해보니 둘다 SYSTEM으로 되어있군요. Asia/Seoul로 바꿔야 할까요?

    Hyunil Kim

    시스템 timezone을 Asia/Seoul 로 바꾸시면 될 듯 하네요.

    공대영

    Asia/Seoul 타임존이 없다는데요?

    Hyunil Kim

    sudo rm -f /etc/localtime
    sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

    공대영

    김현일 헉. 윈도우입니다

    Hyunil Kim

    으어어어어어!!! 어째서 파이썬 개발을 윈도에서 하십니까!!! ㅠㅠ

    Hyunil Kim

    파이썬 개발에는 Vagrant 사용을 추천드립니다.

    공대영

    로컬에서 개발하고 리눅스에서 배포하려고 했어요 ㅠㅠ 다음부턴 가상환경에서 해야겠어요

    Hyunil Kim

    윈도 환경에서의 파이썬 개발은 암을 유발할 수 있습니다.

    공대영

    mysql-python 부터 막혔었습니다 ㅋㅋ vm플레이어라도 장만해야겠네요

    Hyunil Kim

    virtualbox / vagrant 같이 쓰시면 100% 무료입니다.

    KwangYoun Jung

    결국 이 문제는 윈도우에서…막히는 건가요? 재밌게 보고 있었는데…ㅋ

    Hyunil Kim

    정광윤 아뇨 지금 문제는 윈도우라서 막히는건 아니구요, DB 자체의 Timezone 설정이 잘못되어 있어서 그래요 ^^;; 다만 파이썬 경우 말씀드렸다시피 상당수의 라이브러리들의 Linux기반에서 cython 인가… 여튼 C 기반으로 으로 컴파일 되거나 한 녀석들이 있어서 윈도우에서는 골치아파지거든요. (저도 자세한 내용은 기억이 잘…)

    Park Hyungbum

    https://mariadb.com/kb/en/mariadb/time-zones/. 윈도우에서도 수동으로 타임존 정보를 넣을 수는 있긴 합니다…