首页 > 数据库 >django搭建平台实战教程一:生成数据库数据

django搭建平台实战教程一:生成数据库数据

时间:2023-11-01 17:24:05浏览次数:38  
标签:教程 models 数据库 py rest django import class

首先需要创建一个django-rest-framework项目,如何创建可以参考https://www.django-rest-framework.org/tutorial/quickstart/,不再赘述。

创建完结构如图所示

 

settings.py配置mysql数据库

...
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "demo1",
        "USER": "root",
        "PASSWORD": "",
        "HOST": "127.0.0.1",
        "PORT": "3306",
        "CHARSET": "utf8mb4"
    }
}

由于官方用mysql包mysqlclient问题比较多,用pymysql可以替代,根目录__init__.py加入代码

import pymysql
pymysql.install_as_MySQLdb()

models.py加一个DUSER类,参数放原生库没有的数据

from datetime import datetime

from django.db import models
from django.contrib.auth.models import User

# Create your models here.

class InfoMixin(models.Model):
    _create_time = models.DateTimeField(auto_now_add=True)
    update_time = models.DateTimeField(auto_now=True)
    delete_time = models.DateTimeField(null=True)
    class Meta:
        abstract = True

class DUser(User,InfoMixin):
    extra = models.JSONField(max_length=999, default=dict)

serializers.py根据表字段定义序列化程序。

from django.contrib.auth.models import Group
from rest_framework import serializers

from demo.authen.models import DUser


class DUserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = DUser
        fields = ['url', 'username', 'email','extra','update_time','_create_time']


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ['url', 'name']

views.py定义接口使用的表,serializers,认证权限

from django.contrib.auth.models import Group
from rest_framework import viewsets
from rest_framework import permissions
from demo.authen.serializers import DUserSerializer, GroupSerializer
from demo.authen.models import DUser

class DUserViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows users to be viewed or edited.
    """
    queryset = DUser.objects.all().order_by('-date_joined')
    serializer_class = DUserSerializer
    permission_classes = [permissions.IsAuthenticated]


class GroupViewSet(viewsets.ModelViewSet):
    """
    API endpoint that allows groups to be viewed or edited.
    """
    queryset = Group.objects.all()
    serializer_class = GroupSerializer
    permission_classes = [permissions.IsAuthenticated]

urls.py编写url路由适配view

from django.urls import include, path
from rest_framework import routers
from demo.authen import views

router = routers.DefaultRouter()
router.register(r'users', views.DUserViewSet)
router.register(r'groups', views.GroupViewSet)

# 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')),
]

模块加入settings

...
INSTALLED_APPS = [
    'demo.authen.apps.AuthenConfig',
    ...
]

apps.py修改下name

from django.apps import AppConfig


class AuthenConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'demo.authen'

运行迁移数据库命令

python manage.py makemigrations
python manage.py migrate

django对于model层的配置基本完成,访问http://127.0.0.1:8000/users/登录后就可以使用接口

下一篇文章学习编写controller层的代码,实现用户注册和登录,以及判断登录权限。

 

 

标签:教程,models,数据库,py,rest,django,import,class
From: https://www.cnblogs.com/zerotest/p/17803611.html

相关文章

  • Nodejs安装教程
    1.下载 在https://nodejs.cn/download/current/ 下载安装包,我下载的是  node-v18.18.0-x64.msi2.双击安装包,一路点击下一步,我选择安装到D:\nodejs\ 目录3.验证安装  在cmd命令行窗口中,运行  node-v 及 npm-v 将显示版本号4 修改全局模块下载路径4.1......
  • Django实战项目-学习任务系统-自定义URL拦截器
    接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了。首先增加URL拦截器,你不会希望没有登录用户就可以进入用户主页各种功能的,所以增加URL拦截器可以解决这个问题。Django框架本身也有URL拦截器,但是因为本系统用户模型跟Django框架本身用户模型不匹配,所以没有用,......
  • 基础课-数据库3
    6.查询数据语句公式:SELECT列名      FROM  表名一、SELECT列名(多列的话用逗号分隔),*代表查询所有列 1)查询单列数据时使用distinct关键字可以去掉重复数据,加到列名前例如:SELECTDISTINCTjobFROMemp;2)查询数字型列时,可以根据查询需要对数据进行四则运算(加......
  • 如何发包到中央仓库-完整教程
    相信很多小伙伴自己都会有一些包,我们可以将包发布中央仓库,然后直接通过maven来使用这些包,下面就整理下如何将包发到中央仓库。新建项目第一步,我们需要在sonatype上注册一个账号,这一步就不再演示了。注册好账户之后,然后我们来创建项目。点击新建按钮,问题类型选择NewProject,如......
  • linux安装MySQL数据库初始化报错
    在使用如下初始化命令进行数据库初始化时报错,./bin/mysqld--user=mysql--basedir=/usr/local/mysql/mysql/--datadir=/usr/local/mysql/mysql/data/--initialize--lower-case-table-names=1; 权限不足导致,修改命令为:./bin/mysqld--user=root--basedir=/usr/local......
  • Docker从了解到部署应用的详细教程
    一、Docker基础知识1、Docker(1)Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可以移植的容器中,然后发布到任何的linux机器上,可以实现虚拟化;(2)Docker容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低;2、Docker的应用场景(1)Web应用的自动化......
  • Oracle数据库常用命令
    数据库初始化命令表空间相关建立表空间--建立临时表空间CREATETEMPORARYTABLESPACEtemp_name--创建名为temp_name的临时表空间TEMPFILE'D:\app\super\oradata\oracle\temp_name.DBF'--临时文件SIZE50M--其初始大小为50MAUTOEXTENDON--支持自动扩展NEXT......
  • FreeRTOS深入教程(队列内部机制和源码分析)
    (文章目录)前言本篇文章主要来为大家分析队列的内部机制和源码实现。一、队列结构体分析在FreeRTOS中队列会使用一个结构体来表示:1.int8_t*pcHead和int8_t*pcWriteTo:这些指针指向队列存储区的头部和下一个可写入的位置。队列存储区是一个用于存储队列中数据项的缓冲......
  • Docker从了解到部署应用的详细教程
    一、Docker基础知识1、Docker(1)Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可以移植的容器中,然后发布到任何的linux机器上,可以实现虚拟化;(2)Docker容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低;2、Docker的应用场景(1)Web应用的自动化......
  • 无涯教程-React Native - 运行IOS
    如果您想在IOS模拟器中测试您的应用程序,则只需在终端中打开应用程序的根文件夹并运行-react-nativerun-ios上面的命令将启动模拟器并运行该应用程序。我们还可以指定我们要使用的设备。react-nativerun-ios--simulator"iPhone5s在模拟器中打开应用程序后,可以在IOS上按......