从零开发一个Django项目会遇到很多问题,从环境问题慢慢来。如果你本子里跑了一个python代码,在重新运行你的工程demo时会出错,有极大可能是你之前的工程并没有完全关掉。任务管理器或是netstate查看进程,并kill。还有就是手动给你的工程换端口号:python manage.py runserver 9000;(换和其他程序不冲突的端口号)
环境搭建自行网上搜索;在Django工程里创建一个app01
在工程settings里加入我们的app配置和drf,并写好数据库连接
数据库连接:
只搭建一个小的项目框架,熟悉Django操作,因此都在app01中操作,app01目录结构:
在app01中的models.py中建立一个ShopUser类,这一步是建立对应数据库的表,此时会在数据库中生成相应的表格
from django.db import models
# Create your models here.
class ShopUser(models.Model):
name = models.CharField(max_length=20, default='', blank=True, null=True, verbose_name='名字')
u_account = models.CharField(max_length=20, unique=True, blank=True, default='', verbose_name='账号')
sex = models.CharField(max_length=10, default='male', verbose_name='性别')
class Meta:
db_table = 'shop_user'
verbose_name = '商品用户'
verbose_name_plural = '商品用户'
def __unicode__(self):
return '%d: %s' %(self.pk, self.name)
Django有强大的接口自测,在app01的admin中,
from django.contrib import admin
from .models import ShopUser
# Register your models here.
@admin.register(ShopUser)
class BlogTypeAdmin(admin.ModelAdmin):
list_display = ('pk', 'name')
然后创建超级用户,登录浏览器:
作为超级管理员,可以对表信息进行修改
下面,以get方法为例:
建立完models后,我们就拥有了数据库表信息,此时可以编写序列化类:serializes,将数据库中的信息转换成json格式 :
from rest_framework import serializers
from .models import ShopUser
class ShopUserSerializers(serializers.ModelSerializer):
class Meta:
model = ShopUser #指定的模型类
fields = ('pk', 'name', 'u_account', 'sex') #需要序列化的属性
#序列化类继承ModelSerializer,model指的是我们在models中建立的相应类,fields中是要进行展示的字段,json中获取的字段按照
# fields中的排列顺序进行展示
#序列化后写视图
将结果集进行展示,写views视图
from django.shortcuts import render
from rest_framework import viewsets
from .models import ShopUser #将模型类也要导入,查询结果集时需要调用
from .serializers import ShopUserSerializers #将序列化类进行导入
# Create your views here.
class ShopUserViewSet(viewsets.ModelViewSet):
#指定结果集并设置顺序
queryset = ShopUser.objects.all().order_by('pk')
#指定序列化的类
serializer_class = ShopUserSerializers
"""
建立model类,创建数据库表
建立序列化类,将从数据库取到的数据进行序列化,成为json格式
编写相应视图,使用viewsets,获取相应的model(数据库表)的结果,并调用该模型对应的序列化类
在准备好以上工作后,需要设置一个入口,因此要设置路由
"""
然后我们要进入这个接口,获取相应的信息,要有入口,所以要进行路由设置,我们要编写app01下的urls :
from django.shortcuts import render
from rest_framework import viewsets
from .models import ShopUser #将模型类也要导入,查询结果集时需要调用
from .serializers import ShopUserSerializers #将序列化类进行导入
# Create your views here.
class ShopUserViewSet(viewsets.ModelViewSet):
#指定结果集并设置顺序
queryset = ShopUser.objects.all().order_by('pk')
#指定序列化的类
serializer_class = ShopUserSerializers
"""
建立model类,创建数据库表
建立序列化类,将从数据库取到的数据进行序列化,成为json格式
编写相应视图,使用viewsets,获取相应的model(数据库表)的结果,并调用该模型对应的序列化类
在准备好以上工作后,需要设置一个入口,因此要设置路由
"""
编写完子路由后,配置总路由,找和settings同目录的urls进行路由配置
"""djangoProject URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/3.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
import app01
urlpatterns = [
path('admin/', admin.site.urls),
#配置首页路由,打开后跳转首页
# path('', index, name='index'),
#路由里的页面要由view渲染
path('', include('app01.urls'))
]
效果展示: