1 安装django

pip install django

#在 python安装目录\Python38\Scripts下,生成django-admin.exe工具,用于创建django项目中文件和文件夹

#django和flask有些不同,django中项目会有一些默认文件和文件夹

2 创建项目(命令)

> cd D:\Personal\StockSystem
> django-admin.exe startproject 项目名称。
例如,django-admin.exe startproject server

3 创建项目(Pycharm)

特殊说明,两种创建方式的对比:

  1. 命令创建,是标准的
  2. pycharm创建,是在标准的基础上默认给咱加了点东西

添加了一个templates目录(如果用不到,可以删除)

在setting.py-TEMPLATES中添加了 'DIRS': [os.path.join(BASE_DIR, 'templates')]

4. 目录结构

server   
│  manage.py             # 项目的入口,项目的管理,启动项目,创建app,数据管理等,默认不用修改
├─config                # 将项目文件夹名修改为config
│  │ __init__.py
│  │  settings.py       # 【项目配置】如,INSTALLED_APPS,DATABASES...
│  │  urls.py           # 【URL->函数的对应关系】经常操作的文件。另,Flask是和函数放一起的@app.route("/add/user", methods=["GET"])
│  │  asgi.py           # 【接受网络请求(异步,django3支持的异步,但是不太成熟,所以大部分还是用wsgi)】 默认不用修改   
│  │  wsgi.py           # 【接受网络请求(同步)】 默认不用修改   
├─templates             # 这个空文件夹是pycharm创建时生成,如果是用命令创建项目的就没有这个文件夹,所以可以删除
└─user                  # AppOne
│   │  admin.py         # 【固定,不用动】django默认提供了admin后台管理,一般不会使用到,一般测试入数据时会用一下
│   │  apps.py          # 【固定,不用动】app启动类
│   │  models.py         # 【**重要**】对数据库操作
│   │  tests.py         # 【固定,不用动】这个用于做单元测试的,我们只做业务功能
│   │  views.py         # 【**重要**】函数
│   │  __init__.py
│   └─migrations       # 【固定,不用动】用于数据库变更记录
│           __init__.py
│ ─AppTwo                 #  目录结构和AppOne一样
└ ─AppThree               #  目录结构和AppOne一样

#在config/setting.py的TEMPLATES中 'DIRS': [os.path.join(BASE_DIR, 'templates')]是pycharm创建时生成,

如果是用命令创建项目的就没有这个templates,所以可以删除,如, 'DIRS': []

5. 创建app

新建Django新项目时,可以通过pycharm创建一个app,也可以通过下面命令创建app

>python manage.py startapp AppTwo

6. 注册app

创建app之后,要注册app

# 在setting.py的INSTALLED_APPS中添加user
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',
    'AppTwo.apps.ApptwoConfig',          # 注册AppTwo
]

7. 一个简单的接口

7.1 在user/views.py添加函数

from django.http import HttpResponse

def searchUser(request):
    name = request.GET.get('name')
    return HttpResponse("user" + name)  # 字符串作为返回内容

7.2 配置URL->函数 对应关系

# 在urls.py添加以下内容
from user import views 
urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/search/', views.searchUser),    # URL->函数
]

8. 配置跨域

首先安装django-cors-headers模块

首先安装django-cors-headers模块

在config/setting.py中修改

ALLOWED_HOSTS = ['skyemperor.top', 'localhost', '127.0.0.1']

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',
]

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',
]

CORS_ALLOW_CREDENTIALS = True
CORS_ORIGIN_ALLOW_ALL = True
CORS_ORIGIN_WHITELIST = ('http://*.*.*.*:*', 'http://skyemperor.top:*', 'http://localhost', 'http://127.0.0.1')

CORS_ALLOW_METHODS = (
    'DELETE',
    'GET',
    'OPTIONS',
    'PATCH',
    'POST',
    'PUT',
    'VIEW',
)

CORS_ALLOW_HEADERS = ('*',)

9. 启动Django服务

# 在本地生成依赖库版本文件
pip freeze > requirements.txt

# 安装模块
pip install -r requirements.txt

# 启动Django项目
python manage.py runserver 127.0.0.1:5000

10. 测试接口

启动项目,访问http://127.0.0.1:5000/user/search?name=cjh,会得到结果user=cjh

11.使用sqlite3

Django有一个默认的后台,可以看到工程下的urls.py文件生成时就具有一条路由

urlpatterns = [
    path('admin/', admin.site.urls),
]

首先,现在我们打开user/models.py文件,在文件里进行添加类(也就是添加表)

from django.db import models

# Create your models here.
class UserInfo(models.Model):
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=32)
    age = models.IntegerField()

接着,在终端中输入命令

>python manage.py makemigrations # 将models.py中的改动保存到migrations的文件夹中,但还未同步到数据库
>python manage.py migrate        # 同步到数据库

使用命令:python manage.py createsuperuser 创建Web后台的用户名和密码。

D:\project\Stock-Analysis-System\server-django>python manage.py createsuperuser
Username (leave blank to use 'cenjh'): root
Email address:
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

访问Django的后台:http://127.0.0.1/admin/

reference