创建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,即可看到项目运行情况。
目前项目提供如下功能与接口:

  1. 管理后台: http://127.0.0.1:8000/admin/
  2. 在命令行使用coreapi操作接口:http://127.0.0.1:8000/schema/
  3. 注册接口:http://127.0.0.1:8000/auth/registration/
  4. 登录接口:http://127.0.0.1:8000/auth/login/
  5. 退出登录接口:http://127.0.0.1:8000/auth/logout/
  6. 重设密码接口:http://127.0.0.1:8000/auth/password/reset/
  7. 重设密码确认接口:http://127.0.0.1:8000/auth/password/reset/confirm/
  8. 修改密码接口:http://127.0.0.1:8000/auth/password/change/
  9. 用户信息接口:http://127.0.0.1:8000/auth/user/
  10. 注册邮箱验证接口:http://127.0.0.1:8000/auth/registration/verify-email/
Copyright © zhengxiangqi 2018 all right reserved,powered by Gitbook该文件修订时间: 2019-09-30 02:14:29

results matching ""

    No results matching ""