簡體   English   中英

處理DeliciousPie和Django API的請求數據

[英]Manipulate Request data of TastyPie and Django API

我正在用django-tastypie編寫應用程序,以下是我的models.py和resource.py文件。

Models.py:

import uuid

from django.db import models


class User(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=50, null=False)
    email = models.EmailField(max_length=254, null=False)
    password = models.CharField(max_length=100, null=False)
    role = models.CharField(max_length=16, default='basic', null=False)

    def __unicode__(self):
        return self.name, self.email

Resources.py:

from tastypie.resources import ModelResource
from tastypie.authorization import Authorization

from api.models import User


class UserResource(ModelResource):
    class Meta:
        queryset = User.objects.all()
        resource_name = 'user'
        authorization = Authorization()
        excludes = ['password']
        #allowed_methods = ['get']

現在的問題是,每當我從郵遞員到達API終點時,便會直接創建用戶。 現在我不明白的是,請求數據是進入資源,然后進入數據庫還是直接進入數據庫? 實際上,我需要對數據進行一些更改,然后再將其存儲在數據庫中,例如對密碼進行哈希處理,然后將對象存儲在數據庫中。 我是django的新手,那么如何實現呢? 像在Flask中一樣,我們可以執行以下操作:

@user.route('/users', methods=['POST'])
def create_user(user_id):

    data = request.get_json(force=True)

    # do all the changes we want

    user = User(data)
    db.session.add(user)
    db.session.commit()

現在,如果有任何請求來自'/ users'端點,我們可以在'data'變量中獲取它的數據,然后在存儲到數據庫中之前進行任何想要的更改。 但是,如何在Django中用好吃的東西做到這一點。

任何幫助,將不勝感激

如果您在進入database之前必須按摩數據,那么Tastypie具有hydratedehydrate方法的概念。

檢查一下。 這是參考水合物和脫水物

在每個Web框架中,與請求一起發送的數據都是通過某種機制傳遞給api端點的,並且相同的事情發生在Deliciouspie中(您可以在Thastypie文檔中的“ 通過請求/響應周期流動”中進行閱讀)。

如果您想更改發送/接收的有關Hydrate / Dehydrate的數據 ,在您的情況下,您想在用戶密碼上使用dehydrate,但我建議您節省精力,而是通過從AbstractUser繼承來使用自定義用戶模型,當用戶對象保存到數據庫時,默認情況下您可以獲得哈希密碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM