Django创建流程

适用于初学者!!!

一、创建django项目

1.1 安装

pip3 install django

1.2 创建

进入cmd,使用命令创建django

# 创建django的python环境,并切换到该环境下
cd <project name>
django-admin startproject <project name>

使用IDE打开项目文件夹,在项目下修改settings.py文件和创建settings,apps,logs,utils文件夹

├── project_name
	└── project_name
		└── settings # 新文件夹,用于存放生产环境,开发环境的配置文件,和默认的setting.py文件一样
			├── base.py # 由默认生成的setting.py改名
			├── dev.py # 空白的py文件,开发环境development
		  ├── __init__.py
		├── urls.py # 主路由
		 ...
	├── apps # 新文件夹,用于存放应用
	├── logs # 新文件夹,用于存放日志
	└── utils # 新文件夹,用于存放自定义的公共类

二、配置

2.1 配置settings文件

# settings/dev.py

from .base import *

ALLOWED_HOSTS += ["*"]  # 允许所有主机

这里是设置的开发环境,代码修改如下

# manage.py
# os.environ.setdefault('DJANGO_SETTINGS_MODULE', '.settings')
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '.settings.dev')

三、创建应用

创建users模块

cd apps
python ../manage.py startapp users

users模块下新建urls.py文件

├── project_name
└── apps
 └── users
   ├── migrations # 迁移文件夹
     └── __init__.py
   ├── admin.py # django自带的后台管理操作需要再此处实现
   ├── apps.py # 应用的配置信息
   ├── models.py # 数据表模型
   ├── tests.py # 单元测试
   ├── urls.py # 新建的urls管理,子路由
   └── views.py # 视图(接口函数)
├── project_name
	└── urls.py # 主路由

3.1 创建接口

# views.py

# 第一种方式,使用类
from django.views import View
class Users(View):
    def get(self, r):
        pass

    def post(self, r):
        pass
    
# 第二种方式,使用函数
def users(request):
    if request.method == 'GET':
        pass
    if request.method == 'POST':
        pass

3.2 子路由配置

├── users
	└── urls.py
# urls.py

from django.urls import path, re_path
from django.views.decorators.csrf import csrf_exempt # 解决跨域问题
from . import views

urlpatterns = [
		# re_path(r'delete(\d+?)/',views.delete)
    path('路由名1', csrf_exempt(views.函数名)),
    path('路由名2', csrf_exempt(views.类名.as_view())), # 一定要加as_view()
]

3.3 主路由连接子路由

├── project_name
	└── project_name
		├── settings 
			...
		└── urls.py # 主路由
	└── users
		└── urls.py # 子路由
# project_name/project_name/urls.py

from django.urls import path, include

urlpatterns = [
    # path('', include(('user.urls', 'user'), namespace='user')), # 带命名空间
    path('admin/', admin.site.urls), # 默认生成的
    path('users/', include('apps.users.urls')), # 连接子路由
]

3.4 设计数据表模型

# models.py

from django.contrib.auth.base_user import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.db import models


class Users(AbstractBaseUser, PermissionsMixin):
    class Meta:
        ordering = ['email']
        verbose_name = 'User'
        verbose_name_plural = 'Users'
        db_table = 'users'
        permissions = (
            ('can_add_user', 'Can add user'),
            ('can_change_user', 'Can change user'),
            ('can_delete_user', 'Can delete user'),
        )

    email = models.EmailField(max_length=255, unique=True, db_index=True)
    name = models.CharField(max_length=255)
    is_active = models.BooleanField(default=True)
    avatar = models.ImageField(default=None)

    def __str__(self):
        return self.email

3.5 配置数据库

MySQL

pip3 install pymysql

当使用数据库时需要在project_name/project_name/__init__.py文件中添加如下代码

├── project_name
	└── project_name
		├── settings 
		├── asgi.py
		└── __init__.py # 修改该文件
import pymysql

# 指定了pymysql的版本:1.4.3,按照你版本修改,python3.5+ 必须加
pymysql.version_info = (1, 4, 3, 'final', 0)
pymysql.install_as_MySQLdb()

配置连接数据库参数

# settings/dev.py
# 添加如下参数

DATABASES = {
'default': {
  "ENGINE": "django.db.backends.mysql", # 数据库引擎
  "NAME": "",  # 数据库名称
  "USER": "",  # 用户名
  "PASSWORD": "",  # 密码
  "HOST": "",  # 主机地址
  "PORT": "",  # 端口号
}
}

PostgreSQL

pip3 install psycopg2-binary

只需要修改settings/dev.py文件

# settings/dev.py
# 添加如下参数

DATABASES = {
 'default': {
     "ENGINE": "django.db.backends.postgresql_psycopg2", # 数据库引擎
     "NAME": "",  # 数据库名称
     "USER": "",  # 用户名
     "PASSWORD": "",  # 密码
     "HOST": "",  # 主机地址
     "PORT": "",  # 端口号
 }
}

兼容方法

# settings/dev.py
# 添加如下参数

db_config = {
    "sqlite": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",  # noqa: F405
        "OPTIONS": {"timeout": 20},
    },
    "pgsql": {
        "ENGINE": "django.db.backends.postgresql",
        "NAME": "taotie",
        "USER": "root",
        "PASSWORD": "taotie",
        "HOST": "localhost",
        "PORT": 5432,
    },
    "mysql": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "taotie",
        "USER": "root",
        "PASSWORD": "taotie",
        "HOST": "localhost",
        "PORT": 3306,
    },
}

DATABASES = {"default": db_config["mysql"]}

3.6 注册应用

# settings/dev.py

INSTALLED_APPS += [
  "apps.users",  # 添加应用(功能模块)
  "apps.xxx",  # 如果还有其他应用的话需要一一添加 
]  

之前可以直接添加apps就行,不知道是少了什么配置还是什么原因,如果您知道,欢迎评论,感谢大佬!!!!!

3.7 迁移数据表模型

**注意 注意 注意:**由于使用apps文件夹进行应用模块的管理,所以迁移文件时需要进入apps文件夹进行迁移,否则迁移不成功

cd apps
python ../manage.py makemigrations # 生成迁移文件
python ../manage.py migrate  # 执行迁移文件,更新数据库

四、启动

python3 manage.py runserver

补充

django项目创建后会自动生成一个admin的应用,需要创建管理员用户,命令如下

python manage.py createsuperuser

django创建数据表模型的DateTimeFieldDateField类型时,auto_now_add auto_now default,这三个参数不能同时存在。

你可能感兴趣的:(后端,django,python,后端,postgresql,mysql)