안녕하세요 flask를 공부하다가 python문법에 의아함이 생겨 이곳에 질문글 올립니다.

 
KwangRok Ahn

안녕하세요 flask를 공부하다가 python문법에 의아함이 생겨 이곳에 질문글 올립니다.
1. with sqlite3.connect(app.config[‘DATABASE’]) as db:
2. with urllib.urlopen(domain) as page:
이 두개의 구문에서 첫번째 구문은 정상작동하지만, 두번째 구문은
Traceback (most recent call last): File “”, line 1, in
AttributeError: addinfourl instance has no attribute ‘__exit__’
이란 에러 구문을 내뱉고 작동하지않습니다. urllib.urlopen으로 반환된 객체는 fileobject던데 fileobject를 close없이 처리하기위해서 with구문을 사용하는 것이 아닌가요? 왜 두번째 구문은 에러가 나는것일까요 …?? python고수님들의 답변 기다리겠습니다 ..ㅠ_ㅠ

  • Byungjin Park

    with as 문의 경우 보통 자동으로 close 까지 해주는데, urllib 에 종료를 위한 함수가 없어서 그런게 아닐까?

    조성환

    2번째 경우 with contextlib.closing(urllib.urlopen(domain)) as page: 보통 이렇게 쓰이는것 같은데 with가 하는 역할과 closing이 하는 역할의 차이점이 무엇인지 궁금하네요

    KwangRok Ahn

    박병진 형말대로 __exit__ attribute가 없어서 그런가보네요! 근데 객체 하나하나 __exit__ attribute가 있는지 없는지 확인하고 쓰지는 않을것 같은데 그래서 with문을 쓸때 보통 closing 함수를 이용해주는 것인가요 ?

    Byungjin Park

    with as 블록이 끝날 때 사용된 Object가 소멸되어야 하는 것을 전제하는 것 같은데 contextlib.closing이 __exit__ 대신에 이거를 수행해주는 것 같다~!! 아래는 contextlib.closing설명
    >>> print contextlib.closing.__doc__
    Context to automatically close something at the end of a block.

    Code like this:

    with closing(.open()) as f:

    is equivalent to this:

    f = .open()
    try:

    finally:
    f.close()

    Whoami Jeong

    으어 어려워… ㅠㅠ 쿨럭

    Whoami Jeong

    많이 배우네요. 감사합니다 ㅋ

Advertisements

Django 를 쓰는 회사/단체가 어느 정도 될까요? 요즘 스타트업 보면 Rails 를

 
Chinseok Lee

Django 를 쓰는 회사/단체가 어느 정도 될까요?

요즘 스타트업 보면 Rails 를 쓰는 회사가 더 많이 보이네요.

  • Kim SeongJun

    django인지는 모르지만 stylesha.re가 python을 쓰고 있고(아마 flask로 기억) smartstudy도 django를 쓰고 있는 것으로 알고 있습니다. 잘 기억은 안나는데 꽤나 많은 것 같아요 다만 카톡, 미투데이 정도의 규모만한 팀은 아직 없는 것 같네요~

    Jung Kyoung Up

    대규모 서비스에서 장고를 쓴건 인스타그램이 유명하죠

    Kyeong-Mook Kay Cha

    저희가 만든 모바일 게임도 서버단은 django 써요.

    Tae-lim Oh

    저희도 Django를 씁니다. http://www.gluwa.com

김슬님 그룹 초대 감사합니다. 잠깐 훑어봤는데도 유용한 링크들이 그득… 이 그룹에 올

 
SeungGun Lee

김슬님 그룹 초대 감사합니다.
잠깐 훑어봤는데도 유용한 링크들이 그득…
이 그룹에 올라온 피드들의 링크들을 fetching해서 정리해주는 거 하나 만들고 싶어지네요 ㅋ

  • 김슬

    반가워요~
    저녁때 장고 책 물어보신게 생각나서 초대해드렸어요.
    태양님은 이미 멤버시던..

장고로 만든 Cubbying 이란 서비스의 베타 버전입니다. 아직 베타라 엉성해 보이실 수

 
Seonpil Kim

장고로 만든 Cubbying 이란 서비스의 베타 버전입니다. 아직 베타라 엉성해 보이실 수 있으나 구경 한번… http://cubbying.com

  • Whoami Jeong

    오 재미있네요.
    한눈에 나의 흔적을 다시 볼 수 있어서 좋은거 같아요.
    스크롤이 계속 내려가네요 ㅋㅋ 신기했어요 재미있기도하고. ㅋㅋ
    아..
    그런데 타인의 흔적도 다 볼 수 있나보군요. 흠..
    멋진 사이트 잘 봤습니다.~ 감사합니다.

    Kim SeongJun

    회원가입/ 로그인 쪽이 너무 불편하네요. 회원가입하면서 페이스북 파란 버튼을 3번 눌렀습니다. 그냥 회원가입하면 바로 세션저장해서 로그인 되었으면 좋겠네요. 페이스북으로 로그인하는데 이메일을 인증하는 것도 불편하구요. 계정 활성화하는데 이메일이 필요하다는 메시지가 위에 있었으면 좋겠습니다. 하지만 스크롤 내리면 컨텐츠 나오는게 재밌게 구현된 것 같습니다. cubbying의 발전을 기대합니다 번창하세요!

    Seonpil Kim

    좋은 말씀들 매우매우 감사합니다. 팀에 얘기하여 참고가 될 수 있도록 하겠습니다.. 개선해야 할 부분이 한두가지가…!

    Seonpil Kim

    김성준 @ 페이스북으로 로그인할 때는 그냥 페이스북 버튼을 누르면 자동으로 로그인이 되는 방식인데, 말씀 듣고보니 인터페이스가 헤깔리게 되어 있는거 같아요.. 개선하자고 해야겠네요..

    JuHong Jeong

    Facebook으로 로그인 하고 My Story랑 My Cubbying을 눌렀는데 에러가 뜨네요.

    Seonpil Kim

    정주홍 @ 베타라 실시간 업데이트가 잦다보니 타이밍에러(?)를 접하시게 되는 경우가 많을 것 같습니다. 혹 지금도 그런 에러가 있다면 발본색원하겠습니다.

안녕하세요. 이제 ubuntu에 개발환경 마치고, django debug tools도 설치

 
Moon Geun Kim

안녕하세요.
이제 ubuntu에 개발환경 마치고, django debug tools도 설치를 했네요.

지금 ORM을 이용해서 사용자별 월별 접속 횟수를 쿼리를 하려고 하는데요, raw sql을 쓰면 쉽겠지만 공부한다는 마음으로 Model을 이용해서 해보려고 하는데 잘 안되네요.

class User(models.Model):
user_id = models.CharField(primary_key=True)
user_name = models.CharField()

class Login(models.Model):
login_id = models.IntegerField()
user_id = models.ForegienKey(User,db_column=’user_id’)
login_date = models.DateField()

이렇게 있을때
select a.user_name
, to_char(b.login_date,’YYYYMM’) month
, count(*)
from user a, login b
where a.user_id = b.login_id
group by a.user_name
, to_char(b.login_date,’YYYYMM’)

이렇게 하려고 하는데

logins = Login.objects.select_related().extra(select={“month” : “to_char(login_date,’YYYYMM’)}).values(‘user_id’,’month’).annotate(cnt = Count(‘login_id’)

이렇게 하고, debugsqlshell에서 보면 join이 걸리지 않습니다. 아마 values에 명시적으로 필드명을 적어줘서 그런것 같습니다.

앞이 장황했는데요, 질문은 2개의 table을 조인하여 group by 함수 처럼 할수는 없을까요?

  • Jung Kyoung Up

    일단 모델부터 좀 수정을 하시면 편하실거에요. user_id 이런식의 id 컬럼을 따로 만들 필요가 없고 자동생성됩니다. User모델을 수정하자면
    class User(models.Model):
    name = models.CharField()
    만 적으면 끝이고요 마찬가지로 로그인을 수정하자면
    class Login(models.Model):
    user = models.ForengienKey(User)
    date = models.DateField()
    면 충분합니다.
    이런 상황에서 유저별 로그인 횟수를 구한다고 하면
    일단 구하고자 하는 유저 정보를 읽고
    user = User.objects.get(id=1)
    이 유저 정보로 Login 모델을 필터링해서 카운트하면 됩니다.
    login_count = Login.objects.filter(user=user).count()
    SQL 문법으로 생각하기보다 모델 객체지항적으로 생각해보시는게 좋을것 같습니다.
    월별로 뽑으려면 filter에다가 해당월을 넣어주면 됩니다.
    filter(user=user,date__month=9)
    장고 프로젝트 사이트에서 튜토리얼 부분과 모델 문법부분 문서를 자세히 보시면 이해에 도움이 될거라 생각합니다.

    Moon Geun Kim

    답변감사합니다. 하는일 sql이라 한방쿼리가 가눙할까해서요. 그럼 카운트 하는 쿼리가 사용자건수만큼 수행이되겠죠?

    Jung Kyoung Up

    Filter(user__id=1) 이런식으로 유저 아이디를 바로 넣을수도 있습니다. User 정보를 읽는 단계를 생략할 수 있게되죠.

서버사이드에서 처음 페이지를 렌더링하면서 자바스크립트에 데이터를 넘겨줘야할때 다들 어떻게

 
Daehee Han

서버사이드에서 처음 페이지를 렌더링하면서 자바스크립트에 데이터를 넘겨줘야할때 다들 어떻게 하시나요?

  • Myunghun Cha

    히든 인풋으로 처리해영..

    Taeho Kim

    JSON으로 변환해서 태그 안에 바로 넣어줍니다.

    Taeho Kim

    아니면 HTML5의 data-* 속성으로 넣고 jQuery.data 함수로 읽어올 때도 있습니다. 자료가 많으면 이 방법이 나을 수도 있겠네요.