2011-09-10 3 views
1

내 장고 API에 문제가 있습니다. 나는 잘 작동하는 웹 사이트를 가지고 있고 이제는 Android app을 만들기 위해 장고 - 피스톤으로 API를 만들고 싶습니다. 데이터를 얻으려고 할 때 url에 키를 보내면 api 프로젝트의 핸들러가 비어 있습니다. 이것들은 api app 내 urls.py와 handlers.py입니다.장고 피스톤과 잘못된 방향 전환

urls.py

from django.conf.urls.defaults import * 
from piston.resource import Resource 
from myproject.api.handlers import ProgramadorHandler 
from myproject.api.handlers import UserHandler 
from myproject.api.handlers import GetProgHandler 
from myproject.api.handlers import GetUserHandler 

prog_handler = Resource(ProgramadorHandler) 
user_handler = Resource(UserHandler) 
get_prog_handler = Resource(GetProgHandler) 
get_user_handler = Resource(GetUserHandler) 

urlpatterns = patterns('', 
url(r'^1.0/(?P<username>)\w+/(?P<password>)\w+/(?P<api_key>)\d+/programadores.(?P<emitter_format>.+)$', prog_handler), 
url(r'^1.0/(?P<username>)\w+/(?P<password>)\w+/(?P<api_key>)\d+/programadores/(?P<prog_id>\d+)/prog.(?P<emitter_format>.+)$', get_prog_handler), 
url(r'^1.0/(?P<username>)\w+/(?P<password>)\w+/(?P<api_key>)\d+/usuarios.(? P<emitter_format>.+)$', user_handler), 
url(r'^1.0/(?P<username>)\w+/(?P<password>)\w+/(?P<api_key>)\d+/user.(? P<emitter_format>.+)$', get_user_handler), 
) 

는 그리고 이것은 내가 그 문제를 해결할 수 있습니다 어떻게 내 handlers.py

from piston.handler import BaseHandler 
from piston.utils import rc, HttpStatusCode 
from myproject.web.models import * 
from django.contrib.auth import authenticate 

class ProgramadorHandler(BaseHandler): 
allowed_methods = ('GET',) 
model = Programador 

def read(self, request, username, password, api_key): 
    user = authenticate(username=username, password=password) 
#  if (api_key != 29010): 
#   return rc.FORBIDDEN 

    if user is not None: 
     return Programador.objects.filter(nombre="Programador completo 2") 

    return Programador.objects.all() 


class GetProgHandler(BaseHandler): 
allowed_methods = ('GET',) 
model = Programador 

def read(self, request, username, password, api_key, prog_id): 
    user = authenticate(username=username, password=password) 
    if user is None or (api_key != 29010): 
     return rc.FORBIDDEN 

    return Programador.objects.all() 


class UserHandler(BaseHandler): 
allowed_methods = ('GET',) 
model = Usuario 

def read(self, request, username, password, api_key): 
    user = authenticate(username=username, password=password) 
    if(api_key != 29010): 
     return rc.FORBIDDEN 

    return Usuario.objects.all() 


class GetUserHandler(BaseHandler): 
allowed_methods = ('GET',) 
model = Usuario 

def read(self, request, username, password, api_key): 
    #user = authenticate(username=username, password=password) 
#  if (api_key != 29010): 
#   user = "hola" 
     #return rc.FORBIDDEN 

    return Usuario.objects.get(username="ersame") 

입니까?

답변

1

urls.py에서 정규식이 잘못되었을 수 있습니다.

url(r'^1.0/(?P<username>)\w+/(?P<password>)\w+/(?P<api_key>)\d+/programadores.(?P<emitter_format>.+)$', prog_handler), ... 

시도 :

url(r'^1.0/(?P<username>\w+)/(?P<password>\w+)/(?P<api_key>\d+)/programadores.(? P<emitter_format>.+)$', prog_handler), ... 
그룹에 대한 패턴 지정은

대신, 예를 들어, 괄호 안에 있어야합니다