django8 DRF框架

django8 DRF框架,第1张

1创建新项目的准备工作 1.1命令框内创建新项目

打开指定文件夹,在路径位置输入cmd打开命令行
django-admin startproject 项目名 创建项目

1.2在新项目内创建子应用

python manage.py startapp 子应用名

1.3注册子应用

在settings.py文件内注册子应用

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    '创建的子应用名'    #注册子应用
]
1.4配置模板

在settings.py文件内配置模板

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 配置模板路径,在根目录创建一个文件夹
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
1.5配置数据库

在settings.py文件内

# 配置数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 使用mysql数据库
        'HOST': 'localhost',  # 主机
        'PORT': 3306,  		# 端口
        'USER': 'root',  	# 数据库的用户名
        'PASSWORD': '密码', # 数据库的密码
        'NAME': '创建的数据库名',  	# 数据库的名字
    }
}
1.6修改语言和时区

在settings.py文件内

LANGUAGE_CODE = 'zh-Hans'  #语言

TIME_ZONE = 'Asia/Shanghai'  #时区
1.7配置静态文件

在settings.py文件内

# 配置静态资源(现在基本上用不到)
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]  #配置路径,在根目录创建文件夹
1.8常用的mysql代码语句

查看所有数据库: show databases;
创建数据库: create database 数据名 charset=utf8;
删除数据库: drop database 数据库名;
调用数据库: use 数据库名;
查看数据库下的所有表: show tables;
查看表结构: desc 表名;
查看表中的所有数据: select * from 表名;

1.9安装数据库

在跟项目名同名的文件夹内init.py文件里安装

import pymysql
pymysql.install_as_MySQLdb()
1.9.1创建模型类

在子应用文件夹里的models.py创建

# 模型类 会自动生成 id字段
class People(models.Model):
    name=models.CharField(max_length=20,verbose_name='姓名')
    sex=models.CharField(max_length=20,verbose_name='性别')
    money=models.IntegerField(verbose_name='身价')
    ranking=models.IntegerField(verbose_name='排名')
    class Meta:
        verbose_name='名人表'
        verbose_name_plural=verbose_name
        db_table='people'
    def __str__(self):
        return self.name
1.9.2创建好模型类后进行迁移

在项目内终端执行
生成迁移文件:python manage.py makemigrations
执行迁移:python manage.py migrate
如果迁移出错,把数据库删了创建新的数据库,生成的迁移文件也删了,重新执行上面2个步骤

1.9.3创建超级用户

创建超级用户 (python终端内运行)
python manage.py createsuperuser
电子邮件地址直接回车跳过
(前后密码要一致)
如果出现cryptography报错就python终端内安装
pip install cryptography

2.在子应用的admin.py文件中添加代码,注册表,不然admin控制台没办法管理这个表

from django.contrib import admin
#导包
from myapp.models import People  #models.py文件内创建的模型类名
# Register your models here.
admin.site.register(People)

3.运行项目,在admin页面添加数据

前后端分离

前端主要追求的是美观、流畅、兼容
后端追求的是三高,高性能、高并发、高可用

什么是restful风格

增删改查
GET:获取数据
POST:提交数据,创建数据
PUT:提交数据,更新数据
DELETE:删除数据
状态码
200 [GET] 获取数据时的状态码
201 [POST/PUT/PATCH] 添加或创建数据
204 [DELETE] 用于删除的状态码

2.DRF工程 下载第三方模块

在黑窗口内进行安装
pip install djangorestframework

在settings.py文件内注册
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp',
    'rest_framework'
]
drf官方文档

APIView处理Request

from rest_framework.views import APIView
from rest_framework.response import Response
from myapp.models import People



class MyView(APIView):
    def get(self, request):
        print(request.query_params)
        return Response({'msg': 'success'}, status=200)
    def post(self, request):
        print(request.data)
        return Response({'msg': 'success'}, status=201)
 
class PeopleView(APIView):
    # 手动获取
    def get(self, request):
        people = People.objects.all()
        people_list = []
        for i in people:
            people_data = {
                'name':i.name,
                'sex': i.sex,
                'money': i.money,
                'ranking':i.ranking
            }
            people_list.append(people_data)
        return Response(people_list, status=200)

配置路由

# from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
    # path('admin/', admin.site.urls),
    path('myview/',views.Myview.as_view())
    path('mymodel/',views.PeopleView.as_view())
]
序列化器自动获取

在子应用中创建一个serializers.py文件写入类方法

#导包
from rest_framework import serializers

class PeopleSerializer(serializers.Serializer):
    name = serializers.CharField(max_length=20)
    sex = serializers.CharField(max_length=20)
    money = serializers.IntegerField()
    ranking = serializers.IntegerField()

在视图层实现

#导包
from myapp.serializers import PeopleSerializer

class PeopleView(APIView):
    def get(self, request):
         people = People.objects.all()
         #people是要序列化的数据,many=True多个数据
         #使用序列化器 对数据进行序列化
         ser = PeopleSerializer(people, many=True)
         return Response(ser.data, status=200)

配置路由

# from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
    # path('admin/', admin.site.urls),
    path('myview/',views.Myview.as_view())
    #注:跟上一个手动获取视图类同名了
    path('mymodel/',views.PeopleView.as_view())
]

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/793344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存