Django-325版本创建时候需要手动设置的内容
1. 设置数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'orm', #要连接的数据库,连接前需要创建好
'USER':'root', #连接数据库的用户名
'PASSWORD':'', #连接数据库的密码
'HOST':'127.0.0.1', # 连接主机,默认本级
'PORT':3306 #端口 默认3306
}
}
2. 设置日志调试
LOGGING= {
'version':1,
'disable_existing_loggers':False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate':True,
'level':'DEBUG',
},
}
}
3. 提示no moudle named MySQLdb,
这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb 对于py3有很大问题,所以我们需要的驱动是PyMySQL 所以,我们只需要找到项目名文件下的__init__,在里面写入
import pymysql
pymysql.install_as_MySQLdb()
4. pymysql版本报错
在项目名文件下的__init__,在里面写入
1,3,3 根据报错的版本号填写
pymysql.version_info = (1, 3, 3, "final", 0)
适合Django 2.0的解决办法
通过查找路径C:\Programs\Python\Python36-32\Lib\site-packages\Django-2.0-py3.6.egg\django\db\backends\mysql
这个路径里的文件把注释掉 就OK了。
if version < (1,3,3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
5. 数据库迁移命令
python manage.py makemigrations
python manage.py migrate
6. auth模块中如果不用默认的user表,而是要自定义扩展字段的
setting.py中要添加 AUTH_USER_MODEL = "app02.UserInfo"
app02是应用名,UserInfo是自定义类名.
7. 如果多个应用解藕,在setting中INSTALLED_APPS写入应用名字
8. 如果有自定义中间件,在setting中MIDDLEWARE写入中间件,
格式为应用名.py文件名.自定义中间件类名
9. 设置时区
10. 解藕前后端文件,也可以再进一步在里面按照应用名进一步解藕
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR,"my_statics")]
11. 解藕上传文件,也可以再进一步在里面按照应用名进一步解藕,注意这里和static不一样,不是一个列表
MEDIA_ROOT = os.path.join(BASE_DIR,"cnblogs/upload_folder")
12. Django sendmail配置
# 发送stmp协议的邮件配置
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# 服务器名称
EMAIL_HOST = 'smtp.sina.com'
# 服务端口
EMAIL_PORT = 25
# 发送的邮箱账号
EMAIL_HOST_USER = 'test@sina.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'cf**********5'
# 收件人看到的发件人,不过尝试一下没用,不知道是不是理解有误,也有设置成 EMAIL_FROM = EMAIL_HOST_USER
EMAIL_FROM = 'test@sina.com>'
13. LOGIN_URL = "/cnblog/login/"
这个是针对login_required这个装饰器用的,一旦登陆认证失败,会跳转到你指定的 LOGIN_URL,带上?next参数
14. 开通media访问路由
主要用来对外网开放访问权限的,比如渲染上传图片的SRC,用来和进行内部和外部的解藕,如果不配置这条路由,外网无法访问项目内部文件
也是和STATIC_URL一样创建一个别名,再配置一条根路径
MEDIA_URL = "/media/"
# 这么配置好后avatar上传的路径就变为了cnblogs/upload_folder/avatar
# todo 遗留问题,如何media按照用户的id或者用户名作为根目录
MEDIA_ROOT = os.path.join(BASE_DIR, "cnblogs/upload_folder/")
15. X-FRAM中间使用,针对HTML中插入了I-frame标签的内容,设置后允许I-frame的内容在同域环境中展示渲染.
X_FRAME_OPTIONS = 'SAMEORIGIN'
16. django常用模块汇总
from django.conf import settings # Django配置文件,自己django项目有配置就用自己的,没有就用系统默认配置。
from django import forms # form组件 class MyForm(forms.Form)
from django.forms import widgets # widget=widgets.PasswordInput(attrs={'class': 'form-control'})
from django.shortcuts import render, HttpResponse, redirect,reverse # 后端反向解析
from django.http import JsonResponse # 直接返回给html页面一个字典对象
from django.contrib import auth # auth组件,用户登录功能校验
from django.contrib.auth.decorators import login_required # 登录认证装饰器
from django.db.models import Count,Max,Min,Avg,F,Q # 聚合与分组连用 F与Q查询
from django.db.models.functions import TruncMonth
from django.utils.safestring import mark_safe # 后端安全校验
from django.db import transaction # django 事务
from django.contrib.auth.models import AbstractUser # 告诉django自定义用户表类 class UserInfo(AbstractUser):
from django.views.static import serve # 暴露后端媒体文件夹资源
# url(r'^media/(?P<path>.*)',serve,{'document_root':settings.MEDIA_ROOT}),
from django.conf.urls import url # 在分路由需导入使用
from django.contrib import admin # 在admin.py文件中做用户表注册
from django import template # 自定义标签使用
# register = template.Library() @register.inclusion_tag('left_menu.html') 自定义标签使用
from django.views import View # CBV 视图类继承View,走View内部的as_views()方法
17 .设置中文管理后台
好像直接设置LANGUAGE_CODE = 'zh-Hans'
就可以,如果不行参考下面步骤
在setting.py头部导入from django.utils.translation import gettext_lazy as _
然后在LANGUAGE_CODE = 'zh-Hans' 上方添加:
LANGUAGES = [
('zh-Hans', _('Chinese')),
]