2012-08-27 44 views
1

這是我api.py404錯誤,同時試圖使用Django美味的餡餅

# myapp/api.py 

from django.contrib.auth.models import User 
from tastypie.authorization import Authorization 
from tastypie import fields 
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS 
from links.models import Link 


class UserResource(ModelResource): 

    class Meta: 
     queryset = User.objects.all() 
     resource_name = 'users' 
     excludes = ['email', 'password', 'is_active', 'is_staff', 'is_superuser'] 
     allowed_methods = ['post','get'] 
     fields = ['username'] 

     def obj_create(self, bundle, request=None, **kwargs): 
      try: 
       bundle = super(CreateUserResource, self).obj_create(bundle, request, **kwargs) 
       bundle.obj.set_password(bundle.data.get('password')) 
       bundle.obj.save() 
      except IntegrityError: 
       raise BadRequest('That username already exists') 
      return bundle 

類型化上一個python殼後:

r = requests.post("http://localhost:8000/api/users/username=Puck") 

,並獲得404錯誤響應。我如何着手創建一個使用郵件的新用戶?

urls.py

from django.conf.urls import patterns, include, url 
from django.conf.urls.defaults import * 
from links.api import LinkResource 
from links.api import UserResource 
from tastypie.api import Api 
# Uncomment the next two lines to enable the admin: 
from django.contrib import admin 
admin.autodiscover() 

v1_api = Api(api_name='v1') 
v1_api.register(UserResource()) 
v1_api.register(LinkResource()) 




urlpatterns = patterns('', 
    # Examples: 


    # Uncomment the admin/doc line below to enable admin documentation 
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')), 

    # Uncomment the next line to enable the admin: 
    url(r'^admin/', include(admin.site.urls)), 
    (r'^api/', include(v1_api.urls)), 
) 

URL方案:

^admin/ 
^api/ ^(?P<api_name>v1)/$ [name='api_v1_top_level'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>link)/$ [name='api_dispatch_list'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>link)/schema/$ [name='api_get_schema'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>link)/set/(?P<pk_list>\w[\w/;-]*)/$ [name='api_get_multiple'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>link)/(?P<pk>\w[\w/-]*)/$ [name='api_dispatch_detail'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/$ [name='api_dispatch_list'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/schema/$ [name='api_get_schema'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/set/(?P<pk_list>\w[\w/;-]*)/$ [name='api_get_multiple'] 
^api/ ^(?P<api_name>v1)/ ^(?P<resource_name>users)/(?P<pk>\w[\w/-]*)/$ [name='api_dispatch_detail'] 
The current URL, api/v1/users/username=Puck, didn't match any of these. 
+0

你在'urls.py'中放了什麼? –

+0

已發佈我的urls.py代碼。 – Hick

回答

2

您要訪問的網址是:

http://localhost:8000/api/v1/users/?username=Puck 

,因爲你宣佈api_name='v1'

+0

仍然有404錯誤。 – Hick

+0

已發佈網址架構。 – Hick

+0

沒有。還是一樣的錯誤。我已經嘗試了所有可能的排列組合,但它仍然給我帶來了同樣的錯誤。 – Hick