해당 Tutorial 은 OSX Lion  기준으로 작성되었습니다.
OSX Snow Leopard 나 Linux도 별반 다르진 않을것 같습니다 :) 



1. Python SDK for Google App Engine 다운로드

http://code.google.com/p/googleappengine/downloads/detail?name=google_appengine_1.5.5.zip&can=2&q=

* 타 OS 를 사용하는 경우 Python 설치가 필요합니다. ( 생략 )

2. Django Sample for google app engine Download

 
http://code.google.com/p/google-app-engine-samples/downloads/detail?name=django_example_20080409.tar.gz


* 환경 변수 설정.
sdk 에 있는 것들을 사용하여, app upload 등을 하기 때문에, 환경 변수를 세팅하여 편리하게 사용합니다.

 12 PATH=$PATH:/Users/taehoonkoo/workspaces/work_django/env/google_appengine                                                                                                                                                       

 
3. Development 모드로 실행하기. - Local 환경에서의 실행


dev_appserver.py 가 Python 2.7을 지원하지 않아,
OSX Lion ( Default 2.7 ) 에서는 실행 할수가 없습니다 ;ㅂ;
 

4. Sample 을 Server에 Update 하기.

a. app.yaml 파일 수정

  1 application: geekbaordtest

  2 version: 1

  3 runtime: python

  4 api_version: 1

 
application : 에 등록한 ${appid}를 등록해줍니다.

b. App Update 하기.

$> appckfg.py update ./


최초 실행시, 인증 정보를 요구 합니다.  

 
인증이 완료 되면, 서버로 전송하게 됩니다.


서버로의 전송이 완료 되면 ${applicatoin-id}.appspot.com 으로 접속 할수 있습니다.

5. 서버로의 접속 & Not AllowedError


Sample을 실행하게 되면 위와 같은 에러가 발생합니다 ;ㅂ;

위의 문제는, webapp과 domain 연결이 되어 있지 않아서 발생하는 문제 입니다.

관련 mail thread http://groups.google.com/group/areciboapp/browse_thread/thread/7d5859a06ae2e0ce?pli=1

 
Google Apps 도메인 연결은 좀 귀찮기도 해서, 우선 해당 에러를 발생하는 녀석만 제거하고, 
실행시켜보도록 하겠습니다.


 
views.py의 64,65 라인이 해당 로그인 관련 url 생성 코드이면, Error를 발생시키는 파트임으로,
주석 처리 합니다.

그리고 다시 update 후에 실행하면!

 
위와 같이 정상적으로 페이지가 나옴을 볼수 있습니다.

 


settings.py 를 template에서 사용하기 위해서는 기본적으로 context할때 값을 넣어 주는 수 밖에 없다.

    context = {'DEBUG': settings.DEBUG}

 
근데 view에서 매번 이것을 세팅해서 넘겨주는건 좀 아니지 않을까? :)

그래서 context_processor를 사용하여 모든 request의 context에 값을 세팅 할 수 있다.

 myapp/context_processors.py를 아래와 같이 작성하자.

def load_settings(request):

return {'DEBUG':settings.DEBUG} 


그리고 settings.py에 아래와 같이 CONTEXT_PROCESSOR를 등록한다.

 86 TEMPLATE_CONTEXT_PROCESSORS = (

 87         'myapp.context_processors.load_settings',

 88         'django.contrib.auth.context_processors.auth',
89 ) 

 
template에서의 사용법은 아래와 같다.

<div>{{DEBUG}}</div>



application으로 들어오는 모든 request를 Catch하기 때문에, 한번 해두면 어디서든 쓸 수 있다.

 

static file을 DJango Framework에서 사용하기 위한 설정

1. django.contrib.staticfiles app 설정

116 INSTALLED_APPS = (

117     'django.contrib.auth',

118     'django.contrib.contenttypes',

119     'django.contrib.sessions',

120     'django.contrib.sites',

121     'django.contrib.messages',

122     'django.contrib.staticfiles',


 ( default로 포함되어 있다.)

2. STATIC_ROOT 설정

 STATIC_ROOT = '/Users/taehoonkoo/workspaces/work_django/static/'

static file이 모이게 되는 folder

3. STATIC_URL 설정

 STATIC_URL = '/static/'

{{PROJECT_URL}}/static/로 접근이 가능하게 된다.

4. STATICFILES_DIRS

71 STATICFILES_DIRS = (

 72     # Put strings here, like "/home/html/static" or "C:/www/django/static".

 73     # Always use forward slashes, even on Windows.

 74     # Don't forget to use absolute paths, not relative paths.

 75     ("js","/Users/taehoonkoo/workspaces/work_django/testproject/static/js/"),

 76     ("css","/Users/taehoonkoo/workspaces/work_django/testproject/static/css/"),

 77     ("images","/Users/taehoonkoo/workspaces/work_django/testproject/static/images/"),

 78     ("pages","/Users/taehoonkoo/workspaces/work_django/testproject/static/pages/"),

 79 )


prefix를 사용하면, /static/js, /static/images/ 등으로 사용하면 된다.

설정이 잘못되어도, server에 올라 갈때 error가 감지 되지 않기 때문에, 아래와 같은 명령어로 확인할 수 있다.

$ python manage.py collectstatic --help
$ python manage.py findstatic my.js



원문 : https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#std:setting-STATICFILES_DIRS

 

referer = request.META.get('HTTP_REFERER', '') 


이건 DJango 라기 보다, HTTP META 스펙일듯.

{% autoescape off %} 

     {{ blahblah  }}
{% endautoescape %}



이렇게,  autoescape tag로 감싸 주기만 하면 된다.
 

DJango Project를 Apache와 설정하는것으로 해보았습니다.

http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

에 설명 된대로 아래와 같이 설정을 해줘야 하는데요

 1 <Location /django_bookmarks>

  2     SetHandler python-program

  3     PythonHandler django.core.handlers.modpython

  4     SetEnv DJANGO_SETTINGS_MODULE myproject.settings

  5     PythonOption django.root /django_bookmarks

  6     PythonDebug On

  7     PythonPath "['/path/to/project'] + sys.path"

  8 </Location>


   7     PythonPath "['/path/to/project'] + sys.path"

요 파트 때문에 삽질했습니다 ㅎㅎ

Proejct Path가 /work_django/myproject 라면,

이 패스가 아니라, /work_djagon 까지 입니다. 

그래서 Package Import시 myproject.setting 혹은 myproject.urls 같은것을 Symbol로 찾게 되는데요

myproject folder밑에 setting.py를 찾게 되는것이지요 Python 초보라서 이런것들을 잘 모르고 있었나 봅니다 :)


 

+ Recent posts