配置settings(本次格式为MVT)
DEBUG为运行出错时,是否报错,这个当项目上线时,需要将它改为false
在settings里面第65行回车然后输入以下代码
‘builtins’: [‘django.templatetags.static’],# 注这个一定要敲对,不然当你后期网页渲染的时候,他就会报错。我找了1h才知道这个错误,下面是我写的错误代码截图
常用的配置的数据库:
a.创建一个数据库,
1.进入mysql
2.create database first_por charset utf8;
3.use first_por
b.创建用户
create user summer identified by ‘summer’;
c.赋予权限
grant all on 数据库名.* to ‘用户名’@’%’;
d.更新权限
FLUSH PRIVILEGES;
当这些弄完以后,回到settings里面设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'HOST':'127.0.0.1',
'POST':'3306',
'NAME':'数据库名',
'USER':'用户名',
'PASSWORD':'密码',
}
}
ok 再去运行起来,看看有没有小火箭。
考虑到安全情况下配置的数据库
a.新建一个python包,utils(名字随便)
在里面创建一个dbs的文件夹,再在里面创建一个名为dbs.cnf的文件
在里面写入:
[client]
database = 数据库名
user = 用户名
password = 密码
host = 127.0.0.1
post = 3306
default-character-set = utf8
写完之后将原来的在settings里面的信息注释或者删除,再将ENGINE换成mysql引擎:
'ENGINE': 'django.db.backends.mysql'
设置完成之后,在注释的下方写入以下数据:
'OPTIONS':{
'read_default_file':'utils/dbs/dbs.cnf'
}
配置完redis我就需要将redis也配置进去
在# Password validation前面开始配置就行
# 配置redis 用处:保存重写数据,校验码,django的反存机制,静态页面
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
将上面这行代码输进去之后,你就需要安装一个依赖包,进入虚拟机输入:
pip install django-redis
接下来配置日志器
# 配置日志器,记录网站的日志信息
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', # DEBUG级别以上都可以加入
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': { # 文件
'level': 'INFO',
'class': 'logging.handlers.RotatingFileHandler',
'filename': os.path.join(BASE_DIR, "logs/july.log"), # 日志文件的位置
'maxBytes': 300 * 1024 * 1024,
'backupCount': 10, # 保留文件个数
'formatter': 'verbose'
},
},
'loggers': {
'django': { # 定义了一个名为django的日志器
'handlers': ['console', 'file'],# 表示可以往终端和文件写入
'propagate': True,
'level': 'INFO', # 日志器接收的最低日志级别
},
}
}
以上你需要在根目录下创建一个名为log的文件夹,在里面创建一个july.log的文件(名字自己取哟,但必须和上面对应)—‘filename’: os.path.join(BASE_DIR, “logs/july.log”),
当上面的都完成创建了之后,在根目录下创建一个static的文件夹,用来存储之后写的css,html,js文件。并将它指定为根目录,(右击选择MARK DIR AS,选择蓝色的dir就可以)
创建完成之后再settimngs的最后一行写入以下代码:
STATICFILES_DIRS = [
os.path.join(BASE_DIR,'static')
]
ok 让我们运行看一下把:
什么!报错??
Did you install mysqlclient?
这个报错是因为我们没有下载一个django与mysql连接的接口,回到虚拟机下载吧
pip instqll pymysql
然后在你创建的项目文件夹下的__init__.py里面写入以下代码:
import pymysql
pymysql.install_as_MySQLdb()
创建app
在根目录下创建一个名为apps的文件夹,并把它指定为根目录
1.然后回到虚拟机,先cd到项目文件,在cd到apps
…/manage.py startapp user(新建一个app名字为user)
…/manage.py startapp news
2.需要将虚拟机里的app同步到物理机
3.在settings里面注册app
INSERT_APP下面写
'apps.news',
'apps.user',
也可以更高级,
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# my projects
sys.path.insert(1,os.path.join(BASE_DIR, 'apps'))
然后在刚才的地方输入'user'和'news'就好了
接下来就是配置url了
先在每个app里面创建一个urls.py的文件
from django.urls import path
urlpatterns = [
]
然后打开项目文件的url在urlpatterns里写入
from django.urls import path,include
path('user/',include('user.urls'),
path('news/',include('news.urls')))
ok 路由创建完成之后,我们就开始创建视图啦
先用uesr这个app的视图玩一下
---user/views.py
from django.http import HttpResponse
def demo(request):
res = '感谢大家的观看'
return HttpResponse(res)
然后在user的urls里配置url
---user/urls
from user import views
path('',views.demo)
当这些完成以后,让我们来看一下是否成功把!
127.0.0.1:8000/user/
urlpatterns = [
]
然后打开项目文件的url在urlpatterns里写入
from django.urls import path,include
path('user/',include('user.urls'),
path('news/',include('news.urls')))
ok 路由创建完成之后,我们就开始创建视图啦
先用uesr这个app的视图玩一下
---user/views.py
from django.http import HttpResponse
def demo(request):
res = '感谢大家的观看'
return HttpResponse(res)
然后在user的urls里配置url
---user/urls
from user import views
path('',views.demo)
当这些完成以后,让我们来看一下是否成功把!
127.0.0.1:8000/user/