Django - DRF


文章目录

    • [关于 DRF](#关于 DRF)

关于 DRF

DRF : Django REST framework

DRF 是一个建立在Django基础之上的Web 应用开发框架,可以快速的开发REST API接口应用。

在REST framework中,提供了序列化器Serialzier的定义,可以帮助我们简化序列化与反序列化的过程,不仅如此,还提供丰富的类视图、扩展类、视图集来简化视图的编写工作。

REST framework还提供了认证、权限、限流、过滤、分页、接口文档等功能支持。

REST framework提供了一个API 的Web可视化界面来方便查看测试接口。


shell 复制代码
pip install djangorestframework

1、接着上文,我们在 ddemo/settings.py 的 INSTALLED_APPS 添加 rest_framework app;添加 REST_FRAMEWORK 键

shell 复制代码
INSTALLED_APPS = [
    'django.contrib.admin',
    ...
    'hello',
    'rest_framework',
]


REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',
    ]
}

2、编辑 ddemo/urls.py

shell 复制代码
from django.contrib.auth.models import User
from django.urls import include, path
from rest_framework import routers, serializers, viewsets


# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']


# ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer


# Routers provide a way of automatically determining the URL conf.
router = routers.DefaultRouter()
router.register(r'users', UserViewSet)

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
    path('', include(router.urls)),
    path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
]

3、创建用户

shell 复制代码
python manage.py createsuperuser

这里我添加用户名为 xx,密码为 1234;后面将会用到


你也可以通过这种方式创建用户:

shell 复制代码
python manage.py createsuperuser --email admin@example.com --username admin

4、运行

shell 复制代码
python manage.py runserver

5、测试 请求

shell 复制代码
curl -H 'Accept: application/json; indent=4' -u xx:1234 http://127.0.0.1:8000/users/
复制代码
http -a admin:password123 http://127.0.0.1:8000/users/

得到:

shell 复制代码
[
    {
        "url": "http://127.0.0.1:8000/users/1/",
        "username": "xx",
        "email": "1625608596@qq.com",
        "is_staff": true
    }
]

创建新用户,名为 new,邮箱为 new@example.com

shell 复制代码
curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u xx:1234 http://127.0.0.1:8000/users/

返回:

shell 复制代码
{
    "url": "http://127.0.0.1:8000/users/2/",
    "username": "new",
    "email": "new@example.com",
    "is_staff": false,
}

相关推荐
程序员梅雨3 分钟前
ZooKeeper面经总结
java·大数据·linux·分布式·后端·zookeeper·中间件
许墨の小蝴蝶7 分钟前
Pillow 替换图片文字后字号偏小的排查
python·pillow
朝朝辞暮i15 分钟前
第 01 讲:Python 变量、对象、数据类型与内存引用
开发语言·python
蜗牛互联网24 分钟前
Java 17 调用视觉 Responses API:JSON 约束与人工复核路由
java·人工智能·后端
外收内放38 分钟前
Python基础语法练习题(69)
开发语言·python
TomEval42 分钟前
【测AI】第11篇:深度学习基础 —— 神经网络是怎么工作的
人工智能·python·深度学习·神经网络·机器学习·aigc
zhang-ge1 小时前
python包和项目管理器uv在ubuntu下的安装与使用
开发语言·python·uv
for_ever_love__1 小时前
LangChain 降级、重试与超时:让服务在模型抽风时还能用
python·自然语言处理·langchain·agent·超时·重试·with_retry
MoRanzhi12031 小时前
第 8 篇 · 机器学习建模与实验评估:建模流程与对照实验
python·机器学习·scikit-learn·模型评估·交叉验证·shap·消融实验
棉猴1 小时前
玩游戏学Python9-算术运算符应用1
python·游戏·pygame·玩游戏·游戏编程