Parcourir la source

定义数据模型

洪海涛 il y a 3 ans
commit
d710dc239a

+ 10 - 0
.gitignore

@@ -0,0 +1,10 @@
+./mysql_db
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+

+ 66 - 0
README.md

@@ -0,0 +1,66 @@
+## 参考地址
+
+https://docs.djangoproject.com/zh-hans/4.0/intro/tutorial01/
+
+## 项目说明
+
+### 安装 django
+pip3 install django
+
+ps.可能需要配置环境变量,python
+export PATH=/Users/didi/Library/Python/3.8/bin:$HOME/bin:$PATH
+
+### 创建 django 项目
+django-admin startproject admin_site
+
+### 初始化配置
+python3 manage.py migrate
+
+### 创建 user 子模块
+python3 manage.py startapp user
+
+### 安装mysql
+使用说明:https://juejin.cn/post/6844904070117851143
+
+### 使用
+创建远程访问用户
+CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
+
+分配权限给用户
+GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%';
+
+### 安装 mysqlclient
+安装说明:https://pypi.org/project/mysqlclient/
+
+使用说明:https://www.liujiangblog.com/course/django/165
+
+我选择用mysql-clint代替
+
+pip3 install mysqlclient
+
+配置Django的settings.py
+
+### 注意网络和权限问题
+由于各种各样的原因,很多新手在第一次部署MySQL服务器的时候,总是会出现问题。下面将一些排查手段列出:
+
+- 确保你的Linux发行版没有给你挖坑,不要选小众版本
+- 确保MySQL的版本合格,越新越好
+- 确保Django服务器主机能访问MySQL主机
+- 查看防火墙、端口、用户权限、虚拟机桥接和NAT
+- 通过ssh、ping等一切手段验证网络是畅通的
+- 确保mysqlclient库是最新可用的
+- 确保mysqlclient被安装在了正确的虚拟环境中
+- 通过navicat确保Mysql服务启动并正常工作
+- 确保mysite数据库被正确安装了
+- 确保mysite数据库对当前Django服务器IP发出的,以数据库用户名登录的用户具有正确的权限
+- 确保数据库用户名和密码正确
+- 确保你使用的数据库用户对我们创建的mysqite数据库有读写权限
+- 确保数据库是utf-8模式
+
+总之:
+
+- 服务可用
+- 网络可达
+- 权限满足
+- 模式正确
+

+ 0 - 0
admin_site/admin_site/__init__.py


+ 16 - 0
admin_site/admin_site/asgi.py

@@ -0,0 +1,16 @@
+"""
+ASGI config for admin_site project.
+
+It exposes the ASGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/dev/howto/deployment/asgi/
+"""
+
+import os
+
+from django.core.asgi import get_asgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'admin_site.settings')
+
+application = get_asgi_application()

+ 131 - 0
admin_site/admin_site/settings.py

@@ -0,0 +1,131 @@
+"""
+Django settings for admin_site project.
+
+Generated by 'django-admin startproject' using Django 4.1.dev20220419193849.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/dev/topics/settings/
+
+For the full list of settings and their values, see
+https://docs.djangoproject.com/en/dev/ref/settings/
+"""
+
+from pathlib import Path
+
+# Build paths inside the project like this: BASE_DIR / 'subdir'.
+BASE_DIR = Path(__file__).resolve().parent.parent
+
+
+# Quick-start development settings - unsuitable for production
+# See https://docs.djangoproject.com/en/dev/howto/deployment/checklist/
+
+# SECURITY WARNING: keep the secret key used in production secret!
+SECRET_KEY = 'django-insecure-!0(t*tv28%v-igloc5$)-j1optl#e-e!7-x!5xt8p6k8t9u&yp'
+
+# SECURITY WARNING: don't run with debug turned on in production!
+DEBUG = True
+
+ALLOWED_HOSTS = []
+
+APPEND_SLASH=False
+
+# Application definition
+
+INSTALLED_APPS = [
+    'user',
+    'order',
+    'rest_framework',
+    'django.contrib.admin',
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+]
+
+MIDDLEWARE = [
+    'django.middleware.security.SecurityMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.common.CommonMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    'django.middleware.clickjacking.XFrameOptionsMiddleware',
+]
+
+ROOT_URLCONF = 'admin_site.urls'
+
+TEMPLATES = [
+    {
+        'BACKEND': 'django.template.backends.django.DjangoTemplates',
+        'DIRS': [],
+        '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',
+            ],
+        },
+    },
+]
+
+WSGI_APPLICATION = 'admin_site.wsgi.application'
+
+
+# Database
+# https://docs.djangoproject.com/en/dev/ref/settings/#databases
+
+DATABASES = {
+    'default': {
+        'ENGINE': 'django.db.backends.mysql', # 数据库引擎
+        'NAME': 'mysite', # 数据库名,先前创建的
+        'USER': 'root', # 用户名,可以自己创建用户
+        'PASSWORD': '123456', # 密码
+        'HOST': '127.0.0.1', # mysql服务所在的主机ip
+        'PORT': '3306', # mysql服务端口
+    }
+}
+
+
+# Password validation
+# https://docs.djangoproject.com/en/dev/ref/settings/#auth-password-validators
+
+AUTH_PASSWORD_VALIDATORS = [
+    {
+        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+    },
+    {
+        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+    },
+]
+
+
+# Internationalization
+# https://docs.djangoproject.com/en/dev/topics/i18n/
+
+LANGUAGE_CODE = 'en-us'
+
+TIME_ZONE = 'UTC'
+
+USE_I18N = True
+
+USE_TZ = True
+
+
+# Static files (CSS, JavaScript, Images)
+# https://docs.djangoproject.com/en/dev/howto/static-files/
+
+STATIC_URL = 'static/'
+
+# Default primary key field type
+# https://docs.djangoproject.com/en/dev/ref/settings/#default-auto-field
+
+DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

+ 29 - 0
admin_site/admin_site/urls.py

@@ -0,0 +1,29 @@
+"""admin_site URL Configuration
+
+The `urlpatterns` list routes URLs to views. For more information please see:
+    https://docs.djangoproject.com/en/dev/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
+from user import views as user_views
+
+# urlpatterns = [
+#     path('admin/', admin.site.urls),
+#     path(r'user/*', include('user.urls')),
+# ]
+
+urlpatterns = [
+    path('admin/', admin.site.urls),
+    path(r'user', user_views.index),
+    path(r'user/list', user_views.list),
+]

+ 16 - 0
admin_site/admin_site/wsgi.py

@@ -0,0 +1,16 @@
+"""
+WSGI config for admin_site project.
+
+It exposes the WSGI callable as a module-level variable named ``application``.
+
+For more information on this file, see
+https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/
+"""
+
+import os
+
+from django.core.wsgi import get_wsgi_application
+
+os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'admin_site.settings')
+
+application = get_wsgi_application()

BIN
admin_site/db.sqlite3


+ 22 - 0
admin_site/manage.py

@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+    """Run administrative tasks."""
+    os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'admin_site.settings')
+    try:
+        from django.core.management import execute_from_command_line
+    except ImportError as exc:
+        raise ImportError(
+            "Couldn't import Django. Are you sure it's installed and "
+            "available on your PYTHONPATH environment variable? Did you "
+            "forget to activate a virtual environment?"
+        ) from exc
+    execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+    main()

+ 0 - 0
admin_site/order/__init__.py


+ 3 - 0
admin_site/order/admin.py

@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.

+ 6 - 0
admin_site/order/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class OrderConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'order'

+ 33 - 0
admin_site/order/migrations/0001_initial.py

@@ -0,0 +1,33 @@
+# Generated by Django 4.1.dev20220419193849 on 2022-04-20 15:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Order',
+            fields=[
+                ('id', models.BigAutoField(primary_key=True, serialize=False)),
+                ('hazardous_waste', models.IntegerField(default=0)),
+                ('recyclable_waste', models.IntegerField(default=0)),
+                ('household_food_waste', models.IntegerField(default=0)),
+                ('residual_waste', models.IntegerField(default=0)),
+                ('user_id', models.CharField(max_length=100, null=True)),
+                ('create_time', models.DateField(auto_now_add=True)),
+                ('update_time', models.DateField(auto_now=True)),
+                ('end_time', models.DateField(null=True)),
+                ('start_time', models.DateField(null=True)),
+                ('desc', models.TextField(blank=True, null=True)),
+                ('feedback', models.TextField(blank=True, null=True)),
+                ('score', models.CharField(blank=True, max_length=100, null=True)),
+                ('is_delete', models.IntegerField(default=0)),
+            ],
+        ),
+    ]

+ 0 - 0
admin_site/order/migrations/__init__.py


+ 19 - 0
admin_site/order/models.py

@@ -0,0 +1,19 @@
+from django.db import models
+
+# Create your models here.
+# 订单信息表
+class Order(models.Model):
+  id = models.BigAutoField(primary_key=True) # 订单ID
+  hazardous_waste = models.IntegerField(default=0) # 有害垃圾
+  recyclable_waste = models.IntegerField(default=0) # 可回收垃圾
+  household_food_waste = models.IntegerField(default=0) # 湿垃圾(厨余垃圾)
+  residual_waste = models.IntegerField(default=0) # 干垃圾
+  user_id = models.CharField(max_length=100,null=True) # 用户ID
+  create_time = models.DateField(auto_now_add=True) # 创建时间
+  update_time = models.DateField(auto_now=True) # 更新时间
+  end_time = models.DateField(null=True) # 订单完成时间
+  start_time = models.DateField(null=True) # 上门时间
+  desc = models.TextField(blank=True,null=True) # 备注
+  feedback = models.TextField(blank=True,null=True) # 反馈
+  score = models.CharField(max_length=100,blank=True,null=True) # 评分
+  is_delete = models.IntegerField(default=0) # 是否删除: 0:未删除;1:删除

+ 3 - 0
admin_site/order/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 9 - 0
admin_site/order/urls.py

@@ -0,0 +1,9 @@
+from django.urls import path, re_path
+from rest_framework import routers, serializers, viewsets
+
+from . import views
+
+urlpatterns = [
+    path('', views.index, name='index'),
+    path('user/list/', views.list),
+]

+ 41 - 0
admin_site/order/views.py

@@ -0,0 +1,41 @@
+from django.shortcuts import render
+
+# Create your views here.
+from django.http import HttpResponse
+from django.views.decorators.http import require_http_methods
+from django.views.decorators.csrf import csrf_exempt
+
+from rest_framework import viewsets
+from rest_framework import permissions
+
+def index(request):
+    return HttpResponse("Hello, world. You're at the polls index.")
+
+def test(request):
+    return HttpResponse("hello world!")
+    # return render(request,'test.html')
+
+@csrf_exempt
+@require_http_methods(["GET", "POST"])
+def list(request):
+    print(request.method)
+    return HttpResponse("Hello, world. request.")
+    # print('this?')
+    # if request.method == 'POST':
+        # return HttpResponse("Hello, world. request.")
+    # return 'error'
+
+# GET
+# def get_user(request):
+#     if request.method === 'GET':
+
+# POST
+
+
+# class UserViewSet(viewsets.ModelViewSet):
+#     """
+#     API endpoint that allows users to be viewed or edited.
+#     """
+#     queryset = User.objects.all().order_by('-date_joined')
+#     serializer_class = UserSerializer
+#     permission_classes = [permissions.IsAuthenticated]

+ 0 - 0
admin_site/user/__init__.py


+ 6 - 0
admin_site/user/admin.py

@@ -0,0 +1,6 @@
+from django.contrib import admin
+
+# Register your models here.
+from .models import User
+
+admin.site.register(User)

+ 6 - 0
admin_site/user/apps.py

@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class UserConfig(AppConfig):
+    default_auto_field = 'django.db.models.BigAutoField'
+    name = 'user'

+ 32 - 0
admin_site/user/migrations/0001_initial.py

@@ -0,0 +1,32 @@
+# Generated by Django 4.1.dev20220419193849 on 2022-04-20 15:33
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    initial = True
+
+    dependencies = [
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='User',
+            fields=[
+                ('id', models.BigAutoField(primary_key=True, serialize=False)),
+                ('name', models.CharField(blank=True, max_length=10)),
+                ('nickname', models.CharField(blank=True, max_length=20)),
+                ('address', models.TextField(blank=True, null=True)),
+                ('email', models.CharField(blank=True, max_length=100, null=True)),
+                ('password', models.CharField(blank=True, max_length=10, null=True)),
+                ('mobile', models.IntegerField(default=0)),
+                ('type', models.CharField(max_length=20)),
+                ('sex', models.IntegerField(default=3)),
+                ('create_time', models.DateField(auto_now_add=True)),
+                ('update_time', models.DateField(auto_now=True)),
+                ('car', models.CharField(blank=True, max_length=200, null=True)),
+                ('is_delete', models.IntegerField(default=0)),
+            ],
+        ),
+    ]

+ 0 - 0
admin_site/user/migrations/__init__.py


+ 20 - 0
admin_site/user/models.py

@@ -0,0 +1,20 @@
+# 创建模型
+from django.db import models
+
+# 人员信息表
+
+
+class User(models.Model):
+    id = models.BigAutoField(primary_key=True)  # 用户id
+    name = models.CharField(max_length=10,blank=True)  # 用户名称
+    nickname = models.CharField(max_length=20,blank=True)  # 用户昵称
+    address = models.TextField(blank=True,null=True)  # 用户地址
+    email = models.CharField(blank=True,max_length=100,null=True)  # 账号
+    password = models.CharField(max_length=10,blank=True,null=True)  # 密码
+    mobile = models.IntegerField(default=0)  # 用户联系方式
+    type = models.CharField(blank=False,max_length=20) # 用户类型 FL001:客户;FL002:垃圾车司机;FL003:回收站人员
+    sex = models.IntegerField(default=3)  # 性别: 0:保密;1:女;2: 男
+    create_time = models.DateField(auto_now_add=True)  # 创建时间
+    update_time = models.DateField(auto_now=True)  # 更新时间
+    car = models.CharField(max_length=200,blank=True,null=True)  # 性别: 车牌号
+    is_delete = models.IntegerField(default=0)  # 是否删除: 0:未删除;1:删除

+ 3 - 0
admin_site/user/tests.py

@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.

+ 9 - 0
admin_site/user/urls.py

@@ -0,0 +1,9 @@
+from django.urls import path, re_path
+from rest_framework import routers, serializers, viewsets
+
+from . import views
+
+urlpatterns = [
+    path('', views.index, name='index'),
+    path('user/list/', views.list),
+]

+ 41 - 0
admin_site/user/views.py

@@ -0,0 +1,41 @@
+from django.shortcuts import render
+
+# Create your views here.
+from django.http import HttpResponse
+from django.views.decorators.http import require_http_methods
+from django.views.decorators.csrf import csrf_exempt
+
+from rest_framework import viewsets
+from rest_framework import permissions
+
+def index(request):
+    return HttpResponse("Hello, world. You're at the polls index.")
+
+def test(request):
+    return HttpResponse("hello world!")
+    # return render(request,'test.html')
+
+@csrf_exempt
+@require_http_methods(["GET", "POST"])
+def list(request):
+    print(request.method)
+    return HttpResponse("Hello, world. request.")
+    # print('this?')
+    # if request.method == 'POST':
+        # return HttpResponse("Hello, world. request.")
+    # return 'error'
+
+# GET
+# def get_user(request):
+#     if request.method === 'GET':
+
+# POST
+
+
+# class UserViewSet(viewsets.ModelViewSet):
+#     """
+#     API endpoint that allows users to be viewed or edited.
+#     """
+#     queryset = User.objects.all().order_by('-date_joined')
+#     serializer_class = UserSerializer
+#     permission_classes = [permissions.IsAuthenticated]

BIN
~$需求文档.docx


BIN
需求文档.docx