创建Django项目
请注意,每次开发前,请先启动事先创建好的虚拟环境,启动后命令行效果如下:
(env_name) ➜ python
使用django-admin命令创建项目
(env_name) ➜ python django-admin startproject project_name
进入项目目录,使用django-admin命令创建app,使用编辑器打开项目同名文件夹下的settings.py文件进行编辑,例如vim:
(env_name) ➜ python cd project_name
(env_name) ➜ project_name django-admin startapp myapp
(env_name) ➜ project_name vi project_name/settings.py
找到 ALLOWED_HOSTS 变量,并为其添加允许的host,这将影响到部署到正式环境时项目能否正常工作:
# host格式为'127.0.0.1','*'代表允许所有的host
ALLOWED_HOSTS = ['*']
找到 INSTALLED_APPS 变量,并为其添加使用到的应用,同时添加 SITE_ID 变量(框架要求):
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'rest_framework',
'rest_framework.authtoken',
'rest_auth',
'allauth',
'allauth.account',
'rest_auth.registration',
'myapp.apps.MyappConfig',
]
SITE_ID = 1
配置DjangoRestFramework,使接口支持分页,设置每页数据为10条:
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10
}
配置数据库参数,根据需求选择一种配置即可
# 方案一:使用sqlite进行开发
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 方案二:使用mysql进行开发,自行修改数据库名称及用户名密码
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_name',
'HOST': 'localhost',
'PORT': '3306',
'USER': 'user',
'PASSWORD': 'password',
'OPTIONS': {
'init_command': 'SET default_storage_engine=INNODB',
},
}
}
配置项目时区,将影响到数据库保存的时间是否是正确的:
TIME_ZONE = 'Asia/Shanghai'
配置项目静态目录,将影响到部署后的静态文件路径,以及管理后台等页面是否能正常显示:
# 在工程目录下新建static文件夹,用来存放静态文件
STATIC_URL = '/static/'
STATIC_ROOT = '/static/'
将静态文件拷贝到static目录下,避免部署后静态文件404错误页面显示不正常:
(env_name) ➜ project_name python manager.py collectstatic
在项目目录下,使用编辑器打开urls.py文件,编辑默认的路由:
(env_name) ➜ project_name vi project_name/urls.py
from django.contrib import admin
from django.urls import path, include
from rest_framework.schemas import get_schema_view
schema_view = get_schema_view(title='API Root')
urlpatterns = [
path('schema/', schema_view),
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework')),
path('auth/', include('rest_auth.urls')),
path('auth/registration/', include('rest_auth.registration.urls')),
]
若数据库采用的是mysql方案,则启动应用前需先创建对应的数据库:
# 使用mysql命令进入数据库终端
(env_name) ➜ project_name mysql -uuser -p
# 输入指令创建数据库
$mysql CREATE DATABASE IF NOT EXISTS `db_name` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
构建数据库表结构,以后若app中有改动models.py文件中的表结构,都需要重新makemigration与migrate:
(env_name) ➜ project_name python manager.py makemigration myapp
(env_name) ➜ project_name python manager.py migrate
创建管理员账户
(env_name) ➜ project_name python manager.py createsuperuser
**启动项目**
```bash
(env_name) ➜ project_name python manager.py runserver
# 若要启动到自定义的host与端口,则命令如下:
(env_name) ➜ project_name python manager.py runserver 127.0.0.1:8000
预览项目:
打开浏览器输入相应的地址:http://127.0.0.1:8000,即可看到项目运行情况。
目前项目提供如下功能与接口:
- 管理后台: http://127.0.0.1:8000/admin/
- 在命令行使用coreapi操作接口:http://127.0.0.1:8000/schema/
- 注册接口:http://127.0.0.1:8000/auth/registration/
- 登录接口:http://127.0.0.1:8000/auth/login/
- 退出登录接口:http://127.0.0.1:8000/auth/logout/
- 重设密码接口:http://127.0.0.1:8000/auth/password/reset/
- 重设密码确认接口:http://127.0.0.1:8000/auth/password/reset/confirm/
- 修改密码接口:http://127.0.0.1:8000/auth/password/change/
- 用户信息接口:http://127.0.0.1:8000/auth/user/
- 注册邮箱验证接口:http://127.0.0.1:8000/auth/registration/verify-email/