我已經setuped django-rest-framework及其基本用戶/組api,如下所述:http://www.django-rest-framework.org/。雖然我可以通過api查看用戶和組,但我無法登錄。有/ api-auth/login頁面,並且每當我插入un & passwd並提交時,它都只是重定向到同一頁面而沒有任何呈現消息。我不知道我錯過了什麼。我如何「登錄」到API中。django-rest-framework quickstart:登錄到它的API
回答
它是由我使用定製的身份驗證後端引起的:
# settings.py
AUTHENTICATION_BACKENDS = (
'web.auth_backends.EmailAuthBackend',
)
# auth_backends.py
class EmailAuthBackend(object):
def authenticate(self, email=None, password=None):
try:
user = User.objects.get(email__iexact=email)
if user.check_password(password):
return user
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
基本上它被通過關鍵字「用戶名」,但它接受的「電子郵件」代替。所以它引發了一個異常,在django的contrib.auth.authentificate中捕獲,用戶無法登錄。我通過用「email」替換「username」來解決它。
Django rest框架支持不同的認證方法。不知道你的意思是/ api-auth /。在這個框架中沒有這樣的標準網址。請檢查documentation以瞭解可以使用哪些驗證方法以及如何進行驗證。
如果你在問題中提供的鏈接並搜索'api-auth',你會發現我的意思。無論如何,這是我的錯,我錯誤地取代了我自己的身份驗證後端。 – clime
那麼我做了搜索。我提供的鏈接上沒有api-auth。除了django-rest-framework的源代碼(也就是我首先檢查的)的源代碼中沒有api-auth – Aldarund
這很奇怪,這是url http://www.django-rest-framework .org /,我可以找到這一段:_如果你打算使用可瀏覽的API,你可能還想添加REST框架的登錄和註銷視圖。將以下內容添加到您的根urls.py文件中._ 'urlpatterns = patterns('', ... url(r'^ api-auth /',include('rest_framework.urls',namespace ='rest_framework ')) )' – clime
- 1. 登錄到Gmail API
- 2. 登錄到Facebook的api
- 3. oAuth登錄到Quickbooks API
- 4. 如何登錄到MACM API
- 5. 登錄到JIRA SOAP API
- 6. 基於DjangoRestFramework/Django的類視圖 - 如何使它重定向到登錄頁面,如果403引發錯誤
- 7. Liferay的登錄API
- 8. Prestashop的登錄API
- 9. Google登錄API
- 10. Google API登錄
- 11. Android登錄API?
- 12. Eventbrite API登錄
- 13. Google+ api登錄
- 14. 登錄MeanJS API
- 15. Smartsheet API登錄
- 16. Trigger.io:Facebook API登錄
- 17. Facebook登錄API
- 18. 登錄到Android的Facebook的REST API
- 19. 登錄到的AdWord不使用API
- 20. 使用Airbnb登錄或API登錄
- 21. cakephp:登錄鏈接不會把我帶到登錄頁面,而是它帶我登錄我的登錄頁面
- 22. Facebook API登錄記錄
- 23. Android Google API登錄
- 24. API直接登錄
- 25. Salesforce REST API登錄?
- 26. Salesforce Soap API登錄
- 27. 盒API隱登錄
- 28. Symfony2.8 API +登錄表
- 29. Facebook登錄+ Rest API
- 30. 使用Api登錄
如果您找到解決方案,請記住標記爲答案。 – SlackOverflow