2013-10-13 1 views
0

login을 사용하는 django 프로젝트를 만들었습니다. 일부보기를 실행하고 일부 페이지를 렌더링하기 위해 사용자가 직원인지 확인합니다. 코드는 훌륭하게 작동합니다. 나는 클라이언트 프로그램을 만들고 싶어서 Gtk에서 django 프로젝트에 connets하고 api를 사용하여 db로부터 정보를 얻는다. API는 Django 프로젝트의 많은 모델이 아닌, 충분히 단순 할 수 있습니다. 나는 TasyPie와 같은 api를 만들기위한 몇 가지 훌륭한 앱을 알고 있지만, 나는 훨씬 더 간단한 것을 필요로한다고 생각한다. 내 질문이지만이 : 내 계획은 장고보기에서 응답을 얻으려면 urllib2를 사용하는 것입니다외부 파이썬 스크립트를 사용하여 django 프로젝트에 로그인

하지만 내 질문은 이것입니다. urllib2를 사용하여 사용자가 기록되었는지 어떻게 확인합니까? 장고는 request.user 메소드를 가지고있다. 장고 외부에서 사용할 수 있습니까? 아니면 각 요청마다 항상 사용자 이름과 암호를 보내야하며 장고가 사용자가 인증 된 직원인지 확인해야합니까?

예컨대

나는 내 생각의 기본 로직이 장고보기

def get_some_data(request): 
    user = request.user 
    if user.is_authenticated(): 
     return some json_data 

와 urllib2가 스크립트

data = some_data_to_post_dict 
data = urllib.urlencode(data) 
req = urllib2.Request('http://127.0.0.1:8000/get_some_data.html') 
resp = urllib2.urlopen(req) 

같은 것을 생각했다. 내 urllib2 스크립트의 데이터 내부에 사용자 이름과 암호를 넣고 api에 대한 모든 요청을 확인해야합니까?

예를 들어 장고보기

def get_some_data(request): 
    if request.method = 'POST': 
     username = request['username'] 
     password = request.['password'] 
     user = authenticate(username=username, password=password) #do i need that in every view of my api's? 
     if user_loggedin: 
      return json_data 

urllib2가 스크립트

data = {'username'='some_username', 'password'='some_password', other_data} #do i have to always include username and password on my data from urllib2 script? 
data = urllib.urlencode(data) 
req = urllib2.Request('http://127.0.0.1:8000/get_some_data.html') 
resp = urllib2.urlopen(req) 

답변

0

당신은 잡고 당신을 로그인 할 때 브라우저가, 그러나이 정확히 사용하는 것입니다 않는 것입니다 세션 쿠키를 설정할 수 있습니다 tastypie 및 django rest 프레임 워크의 경우. 그들은 모두 당신이 여기서 계획하고있는 것 (심지어 작은 프로젝트의 경우)보다 사용하기 쉽습니다.

+0

나는 또한 매력처럼 작동하는이 http://goo.gl/5mFifa를 finoun합니다. 아직도 tastypie 또는 rest framework을 권하고 있습니까? – Apostolos

+0

url은 저에게는 효과가 없지만 예, 이러한 프레임 워크는 설치/사용하기 쉽고 조절/캐싱/등등과 같은 지루한 것들에 대해 생각해 본 사람들이이 목적을 위해 만들었습니다. – thebjorn

+0

http://www.forgottenlabs.com/2011/06/how-to-authenticate-in-django-via-urllib2/ 여기에이 링크가 있습니다. – Apostolos