先搭建基于python3.6解释器的虚拟环境,django用2以上版本,再装一些基本的依赖
>: pip install django
>: pip install djangorestframework
>: pip install pymysql
命令行装:
前面这个(luufy)就是说进入了luffy虚拟环境,然后直接pip....装就完事了
pycharm装,先用pycharm进入luffy虚拟环境,底部栏点击Termibal,在里面pip....
1.修改 wsgi.py 与 manage.py 两个文件:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
这样改了后之后设置就不会走原来settings.py,而是走我们建的settings文件夹下的dev.py
2.将settings.py删除或改名,内容拷贝到settings/dev.py中
3.修改dev.py文件内容
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
4.修改启动配置:见插图
5.在任何一个__init__.pu文件中测试默认配置文件是否是dev.py文件
from django.conf import settings
print(settings)
# 官网:https://docs.djangoproject.com
# 中文loggin配置:https://docs.djangoproject.com/zh-hans/2.2/topics/logging/
# 在项目的 dev.py 中配置 Django 项目的log日志,那Django自己出现的打印记录不仅可以输出到控制台,还可以记录到日志文件,当项目上线记录日志时及其重要的
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s' }, 'simple': { 'format': '%(levelname)s %(module)s %(lineno)d %(message)s' }, }, 'filters': { 'require_debug_true': { '()': 'django.utils.log.RequireDebugTrue', }, }, 'handlers': { 'console': { 'level': 'DEBUG', 'filters': ['require_debug_true'], 'class': 'logging.StreamHandler', 'formatter': 'simple' }, 'file': { # 实际开发建议使用WARNING 'level': 'INFO', 'class': 'logging.handlers.RotatingFileHandler', # 日志位置,日志文件名,日志保存目录必须手动创建,注:这里的文件路径要注意BASE_DIR 'filename': os.path.join(os.path.dirname(BASE_DIR), "logs/luffy.log"), # 日志文件的最大值,这里我们设置300M 'maxBytes': 300 * 1024 * 1024, # 日志文件的数量,设置最大日志数量为10 'backupCount': 10, # 日志格式:详细格式 'formatter': 'verbose', 'encoding': 'utf-8' }, }, # 日志对象 'loggers': { 'django': { 'handlers': ['console', 'file'], 'propagate': True, # 是否让日志信息继续冒泡给其他的日志处理系统 }, } }
创建数据库
"""
1.管理员连接数据库
2.创建数据库
>: create database luffy default charset=utf8;
3.以管理员身份登录数据库
>: mysql -uroot -p123
4.查看用户
>: select user,host,password from mysql.user;
5.设置权限账号密码
# 授权账号命令:grant 权限(create, update) on 库.表 to '账号'@'host' identified by '密码'
>: grant all privileges on luffy.* to 'luffy'@'%' identified by 'luffy';
# 要是本机连mysql连不上,再添加localhost访问权限,本机就可以登录了(5.7版本%不包括本机)
>: grant all privileges on luffy.* to 'luffy'@'localhost' identified by 'luffy';
# 设置完有权限限制的账号后一定要刷新权限,如果没刷新权限,该终端无法被通知
>: flush privileges;
6.退出管理员,用账号 luffy 密码 luffy 登入开发
>: exit
>: mysql -uluffy -pluffy
# 后台项目进行数据库配置
7.luffyapi/settings/dev.py配置
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"HOST": "127.0.0.1",
"PORT": 3306,
"USER": "luffy",
"PASSWORD": "luffy",
"NAME": "luffy",
}
}
6.luffypai/__init__.py
import pymysql
pymysql.install_as_MySQLdb()
7.运行会出现Django与pymysql版本兼容问题:见两张插图
注册drf、弃用jdango的csrf
# dev.py
INSTALLED_APPS = [
# ...
'rest_framework',
]
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',
'corsheaders.middleware.CorsMiddleware',
]
创建 home 应用
"""
1.前往apps目录下创建app:cd luffyapi/apps
2.创建app:python ../../manage.py startapp home
"""
# dev.py
import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(os.path.join(BASE_DIR, 'apps'))
# 注:不添加环境变量,注册 应用 很麻烦,会出现 应用 找不到
INSTALLED_APPS = [
# ...
'home'
]
注册子路由
就是路由分发
# 主路由:urls.py
from django.urls import include
urlpatterns = [
# ...
path('home/', include('home.urls')),
]
# 子路由:home/urls.py
from django.urls import path, re_path
urlpatterns = [
]
]
# dev.py 配置
# 1.访问静态文件的url地址前缀
STATIC_URL = '/static/'
# 2. 设置django的静态文件目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static")
]
# 静态目录创建
# 3.在luffyapi/luffyapi中创建static目录(谁是项目根目录就在那个文件夹下创建)
# dev.py配置
# 1.访问上传文件的url地址前缀
MEDIA_URL = "/media/"
# 2.项目中存储上传文件的根目录
MEDIA_ROOT = os.path.join(BASE_DIR, "media")
# 媒体目录创建
# 3.在luffyapi/luffyapi中创建media目录(谁是项目根目录就在那个文件夹下创建)
# 配置路由
from django.urls import re_path
from django.views.static import serve
from django.conf import settings
urlpatterns = [
re_path(r'media/(?P<path>.*)', serve, {"document_root": settings.MEDIA_ROOT}),
]