Я пробую пример использования tastypie и django-registration для регистрации api. Когда я запускаю тестовый файл test_register.py, я получаю сообщение об ошибке. Объект «WSGIRequest» не имеет атрибутов «данные». Я думаю, что это, возможно, связано с концепцией пучков. Любая помощь, чтобы получить этот сценарий работы, ценится.Включение tastypie api для django-registration
api.py
from registration.views import register
from tastypie.resources import ModelResource
from tastypie.constants import ALL
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from tastypie.http import HttpUnauthorized, HttpForbidden
from django.conf.urls.defaults import url
from tastypie.utils import trailing_slash
from registration.models import RegistrationManager
class RegisterUserResource(ModelResource):
class Meta:
allowed_methods = ['post']
# authentication = Authentication()
# authorization = Authorization()
include_resource_uri = 'register'
fields = ['username','password']
def prepend_urls(self):
return [
url(r"^(?P<resource_name>%s)/register%s$" %
(self._meta.resource_name, trailing_slash()),
self.wrap_view('register'), name="api_register"),
]
def register(self, bundle, request=None, **kwargs):
username, password = bundle.data['username'], bundle.data['password']
print "reached register"
try:
bundle.obj = RegistrationManager.create_inactive_user(username, username, password)
except IntegrityError:
raise BadRequest('That username already exists')
return bundle
test_register.py
import requests
import json
from urllib2 import urlopen
import datetime
import simplejson
url = 'http://127.0.0.1:8000/apireg/registeruser/register/'
data = {'username' :'[email protected]', 'password' : 'newpass'}
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
print json.dumps(data)
r = requests.post(url, data=json.dumps(data), headers=headers)
print r.content
urls.py
from userdetails.api import RegisterUserResource
register_userresource = RegisterUserResource()
admin.autodiscover()
urlpatterns = patterns('',
...
(r'^apireg/', include(register_userresource.urls)),
)
Обновление
Я внесла некоторые изменения в метод регистрации без использования пакета, и теперь базовая функциональность работает. Это создает неактивный пользователь.
def register(self,request, **kwargs):
data = self.deserialize(request, request.raw_post_data, format=request.META.get('CONTENT_TYPE', 'application/json'))
username = data.get('username', '')
password = data.get('password', '')
# try:
# userreg = RegistrationManager
RegistrationManager().create_inactive_user(username, username, password,'',send_email=False)
У меня все еще есть ошибка, хотя это работает, и я пытаюсь ее решить. «error_message»: «Объект« NoneType »не может быть вызван»
Просто используйте это: http://stackoverflow.com/questions/11770501/how-can-i-login-to-django-using-tastypie –