写在前面
- 默认同学已经了解到 Django 框架的基础知识了,也就是说你会最基本的创建虚拟环境、Django项目、应用以及运行HelloWord这些。为了省事我就不从 CMD 上操作,直接从 PyCharm 上整了。
- 对项目目录不是很了解的请看 附 。
1. 创建Django项目与应用
打开 PyCharm ,新建一个 Django 项目并命名为 DjangoDemo。打开终端安装 Django Rest framework
。
(venv) D:\Sweetyaya\DjangoDemo>pip install djangorestframework
Collecting djangorestframework
...
Successfully installed djangorestframework-3.12.2
创建一个应用
(venv) D:\Sweetyaya\DjangoDemo>django-admin startapp DrfApp
同步数据库
(venv) D:\Sweetyaya\DjangoDemo>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
...
Applying sessions.0001_initial... OK
创建超级用户
(venv) D:\Sweetyaya\DjangoDemo>python manage.py createsuperuser
Username (leave blank to use '***'): yaya
Email address: yaya@test.com
Password:
Password (again):
Superuser created successfully.
2. 序列化和视图
在 DrfDemo/
下创建目录 quickstart/
下创建文件 serializers.py
。
from django.contrib.auth.models import User, Group
from rest_framework import serializers
class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = User
fields = ('url', 'username', 'email', 'groups')
class GroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Group
fields = ('url', 'name')
在 DrfDemo/
下创建目录 quickstart/
下创建文件 views.py
。
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from DrfApp.quickstart.serializers import UserSerializer, GroupSerializer
class UserViewSet(viewsets.ModelViewSet):
"""
允许用户查看或编辑的API路径。
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
class GroupViewSet(viewsets.ModelViewSet):
"""
允许组查看或编辑的API路径。
"""
queryset = Group.objects.all()
serializer_class = GroupSerializer
3. 修改URLs
修改 DjangoDemo/
下的 url.py
文件
from django.conf.urls import url, include
from rest_framework import routers
from DrfApp.quickstart import views
router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
# 使用自动URL路由连接我们的API。
# 另外,我们还包括支持浏览器浏览API的登录URL。
urlpatterns = [
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
4. 修改全局设置
修改 DjangoDemo/
下的 settings.py
文件。
INSTALLED_APPS = (
...
'rest_framework',
)
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAdminUser',
],
'PAGE_SIZE': 10
}
5. 测试
运行程序,或执行命令
python manage.py runserver
在浏览器访问 http://127.0.0.1:8000/users/
,可见显示如下(该页面需以第1步的用户和密码进行登录)。
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"url": "http://127.0.0.1:8000/users/1/",
"username": "yaya",
"email": "yaya@test.com",
"groups": []
}
]
附: 文件结构
__DjangoDemo/
|__DjangoDemo/
|__settings.py
|__urls.py
|__DrfApp/
|__quickstart/
|__serializers.py
|__views.py
|__admin.py
|__apps.py
|__...
|__venv/
.
.
.
.
.
.
.
桃花仙人种桃树,又摘桃花换酒钱_