创建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/