当前位置: 首页 > news >正文

创建Django项目

目录

  • 前言
  • 整体项目结构
  • Python环境
  • 利用命令创建Django项目
  • 安装操作MySQL包,rest风格接口包
  • 修改settings.py
    • 修改数据库配置
    • 创建特定功能模块
    • 引入Application definition
  • 添加 model (实体)
  • 生成表
  • 实体注册到admin
  • 序列化
  • 接口
  • 路由
  • 创建超管
  • 调用自己的接口
  • 本文源码
  • 参考

前言

  • 多年前写过Python和django环境配置(windows版本),已经是很久远了,今年再次使用Django,有了更多了解,写本文记录一下。

整体项目结构

在这里插入图片描述

Python环境

  • 我使用了conda,python版本3.10.6。
conda create -n import-excel python=3.10.6
conda activate import-excel

利用命令创建Django项目

  • 注意项目名称不能有 - 横杠
pip install django
django-admin startproject django_sample

安装操作MySQL包,rest风格接口包

pip install djangorestframework
pip install mysqlclient

修改settings.py

修改数据库配置

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'import_excel','USER': 'root','PASSWORD': 'root','HOST': '127.0.0.1','PORT': '3306',}
}

创建特定功能模块

python manage.py startapp app

引入Application definition

INSTALLED_APPS [
...省略...
'rest_framework',
'app',
]

添加 model (实体)

  • models.py
from django.db import models# Create your models here.from datetime import datetime# Create your models here.
class User(models.Model):id = models.AutoField(primary_key=True) #主键可省略不写name = models.CharField(max_length=32)age = models.IntegerField(default=20)phone = models.CharField(max_length=16)create_time = models.DateTimeField(default=datetime.now)def __str__(self):return self.nameclass Meta:db_table = 't_user'  # 指定数据库表名

生成表

python manage.py makemigrations
python manage.py migrate

在这里插入图片描述

  • 执行后就会自动创建表
    在这里插入图片描述
  • 其中t_user是我自己的业务表,其他都是Django框架的。

实体注册到admin

  • admin.py
from django.contrib import admin
from . import models
# Register your models here.admin.site.register(models.User)

序列化

from rest_framework import serializers
from app.models import Userclass UserSerializer(serializers.ModelSerializer):class Meta:model = Userfields = '__all__'

接口

  • 新建views.py
 from django.http import JsonResponse
from django.shortcuts import render
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from app.models import User
from app.serializers import UserSerializer# Create your views here.@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def user(request):if request.method == 'GET':users = User.objects.all()serializer = UserSerializer(users, many=True)return Response(serializer.data)elif request.method == 'POST':serializer = UserSerializer(data=request.data)if serializer.is_valid():serializer.save()return Response(serializer.data, status=status.HTTP_201_CREATED)return Response({'message': 'Hello, world!'})

路由

  • django_sample/urls.py
"""
URL configuration for django_sample project.The `urlpatterns` list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/5.2/topics/http/urls/
Examples:
Function views1. Add an import:  from my_app import views2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views1. Add an import:  from other_app.views import Home2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf1. Import the include() function: from django.urls import include, path2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('', include('app.urls')),
]
  • app/urls.py
from django.urls import pathfrom . import viewsurlpatterns = [path('api/', views.user),
]

创建超管

python manage.py createsuperuser

在这里插入图片描述

  • 创建后,运行项目,浏览器打开http://127.0.0.1:8000/admin/,输入刚才的帐号密码就能管理页面了。

在这里插入图片描述

  • 可以操作表的数据
    在这里插入图片描述

调用自己的接口

  • 浏览器打开http://127.0.0.1:8000/api/
    在这里插入图片描述

  • 可以直接利用这个页面做新增、删除操作,类似swagger的功能

  • 也能json返回
    在这里插入图片描述

本文源码

  • https://github.com/1030907690/django_sample

参考

  • https://juejin.cn/post/7044953698350399502
  • https://www.bilibili.com/video/BV1zi421S7dX/
http://www.lqws.cn/news/531505.html

相关文章:

  • JVM调优实战 Day 7:JVM线程分析与死锁排查
  • 动态库与静态库【Linux】
  • 前端替换打包后文件中的内容方案(可用于渗透测试后将问题版本号清空临时解决方案)
  • 事务相关问题
  • 数学:逆元,同余
  • 热点代码探测确定何时JIT
  • Codeforces Educational Round 180 题解
  • 【25软考网工】第十章 网络规划与设计(2)网络规划与分析、网络结构与功能
  • [按键手机安卓/IOS脚本插件开发] 按键插件调试与判断循环结构辅助工具
  • Jenkins执行Jenkinsfile报错
  • 可用的.gitignore文件
  • LDO的自放电功能
  • UE Universal Camera 相机插件-限制镜头在区域内移动
  • 认识Jacobian
  • 数学:初步了解什么是线性代数?
  • 开发语言漫谈-R语言
  • 超实用AI工具分享——ViiTor AI视频配音功能教程(附图文)
  • LeVERB:利用潜视觉-语言指令进行人形机器人全身控制
  • Oracle数据库捕获造成死锁的SQL语句
  • SDL渲染RGB图像
  • 高通手机跑AI系列之——穿衣试装算法
  • YOLOv10tensorRT推理代码C++
  • 虚拟化测试工具Parasoft Virtualize的两大核心功能及应用
  • 如何写出优秀的单元测试?
  • 【附源码】旅游网站系统设计与实现+SpringBoot + Vue (前后端分离)
  • 设计模式 | 建造者模式
  • 【机器学习深度学习】线性代数
  • 提升开发思维的设计模式(下)
  • Apache 支持 HTTPS
  • 【Linux】软硬链接,动静态库