目录
1.Xadmin
1.Xadmin介绍
文档:https://xadmin.readthedocs.io/en/latest/index.html
GitHub地址:https://github.com/sshwsfc/django-xadmin
2.Xadmin安装
1.通过如下命令安装xadmin的最新版,它文档里面的安装方法好久没有更新了,会导致你安装不成功,所以我们使用下面的网址进行安装
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2
INSTALLED_APPS = [ ... 'xadmin',crispy_formsreversion# 修改使用中文界面 LANGUAGE_CODE = zh-Hans' 修改时区 TIME_ZONE = Asia/Shanghai'
3.xadmin有建立自己的数据库模型类,需要进行数据库迁移
python manage.py makemigrations
python manage.py migrate
4.在总路由中添加xadmin的路由信息
import xadmin xadmin.autodiscover() version模块自动注册需要版本控制的 Model from xadmin.plugins xversion xversion.register_models() urlpatterns = [ path(rxadmin/用户,需要创建,如果有了,则可以直接使用之前的。python manage.py createsuperuser3.Xadmin的使用
xadmin的站点管理类不用继承
admin.ModelAdmin
,而是直接继承object
即可。例如:在子应用中创建adminx.py文件。
站点的全局配置
xadmin from xadmin views class BaseSetting(object): """xadmin的基本配置""" enable_themes = True 开启主题切换功能 use_bootswatch = True 引导控制盘(其实就是我们的左侧菜单栏) xadmin.site.register(views.BaseAdminView,BaseSetting) GlobalSettings(object): xadmin的全局配置 site_title = "路飞学城" 设置站点标题 site_footer = 路飞学城有限公司 设置站点的页脚 menu_style = accordion 设置菜单折叠 xadmin.site.register(views.CommAdminView,GlobalSettings)站点Model管理
xadmin可以使用的页面样式控制基本与Django原生的admin一样
Xadmin自定制
list_display = [id',btitlebreadbcomment']
search_fields = [']
3.
list_filter = [is_delete']4.
ordering = [-age# -倒序5.
show_detail_fields = [list_editablelist_editable = [nameagerefresh_times8.
list_export = (xlsjsoncsv') 写元组或者列表都行 list_export设置为None来禁用数据导出功能 list_export_fields = (bpub_date') 设置允许导出的字段9.
show_bookmarks = True False就隐藏了这个功能
10.
x-field 控制x轴字段
y-field 控制y轴字段,可以是多个值
order 控制默认排序
11.
model_icon = fa fa-gift'12.
readonly_fields = [excludeexclude = [功能,可以参看它的文档,它提供的一些功能我们可能还需要自定制,调整或者添加一些它没有的功能,后面再说
2.项目环境搭建
1.外部依赖
注册容联云短信接口平台的账号[d]
注册保利威视频服务平台的账号[暂时别注册,因为有个7天免费测试期,如果到时候过期了就没法用了,网址:http://www.polyv.net/?f=baiduPZ&utm_term=%E4%BF%9D%E5%88%A9%E5%A8%81]
注册gitee[码云]的账号
2.依赖包安装
pip install django -i https://pypi.douban.com/simple/ 注意:在虚拟环境中安装第三方包的时候,不要使用sudo,因为sudo是以管理员身份来安装,会将安装的东西安装到全局中去,而不是在虚拟环境中,并在linux系统下不要出现中文路径 pip install djangorestframework -i https://pypi.douban.com/simple/ pip install PyMysqL -i https://pypi.douban.com/simple/ pip install Pillow -i https://pypi.douban.com/simple/ pip install django-redis -i https://pypi.douban.com/simple/3.搭建项目
1.创建项目并打开项目
cd ~ mkdir luffy cd luffy django-admin startproject luffyapi
2.调整目录结构
luffy/ ├── docs/ 项目相关资料保存目录 ├── luffycity/ 前端项目目录 ├── luffyapi/ 后端项目目录 ├── logs/ 项目运行时/开发时日志目录 ├── manage.py ├── luffyapi/ 项目主应用,开发时的代码保存 │ ├── apps/ 开发者的代码保存目录,以模块[子应用]为目录保存(包) │ ├── libs/ 第三方类库的保存目录[第三方组件、模块](包) │ ├── settings/ (包) │ ├── dev.py 项目开发时的本地配置 │ ├── prod.py 项目上线时的运行配置 │ ├── test.py 测试人员使用的配置(咱们不需要) │ ├── urls.py 总路由(包) │ ├── utils/ 多个模块[子应用]的公共函数类库[自己开发的组件] └── scripts/ 保存项目运营时的脚本文件在编辑中开发项目时,必须指定项目目录才能运行,例如,开发后端项目,则必须选择的目录是luffyapi
上面的目录结构图,使用Ubuntu的命令tree输出的。 如果没有安装tree,可以使用 sudo apt install tree,就有了。 注意:创建文件夹的时候,是创建包(含init.py文件的)还是创建单纯的文件夹,看目录里面放的是什么, # 1. 如果放的是py文件相关的代码,最好创建包 2. 如果不是,那就创建单纯的文件夹。3.关于配置文件
新的目录settings:
4.创建git代码版本
cd 目录路径 git init
3.Git
1.Git基础命令
git init 在当前目录创建一个空仓库 git status 查看当前项目的版本状态 git add 代码目录 添加代码到上传队列 git commit -m 添加项目代码' 提交代码到本地仓库, -m 表示本次提交的描述2.配置用户名和邮箱
3.在gitee平台创建远程仓库
1.在gitee上创建一个远程仓库
2.如何将gitee远程仓库的代码克隆到本地
git clone 仓库地址 注意,如果当前目录下出现git仓库同名目录时,会克隆失败。 ''' 注意:我们当前项目不需要这个步骤 这个步骤是 当以后我们进入公司里面,参与人家已经在做的项目时,别人已经有仓库了,
但是我们是新人加入项目中的,那么我们不需要在自己本地进行git init,直接git clone 复制别人的仓库代码 '''4.git分支
git branch dev 创建本地分支dev,dev是自定义 git checkout dev 切换本地分支代码 git checkout -b dev 这里是上面两句代码的简写
新建一个分支 git branch 分支名称 查看所有分支 git branch 切换分支[-b表示新建分支的同时并切换到新分支] git checkout -b 分支名称 删除分支 git branch -d 分支名称5.将本地代码推送到远端
git push origin dev:dev 将本地的dev分支推送到远程主机的dev分支
1.如果推送代码,出现以下提示: git pull ....,则表示当前本地的代码和线上的代码版本不同.
1. 把线上的代码执行以下命令,拉取到本地,进行同步 git pull 从远程获取代码并合并本地的版本 2. 根据提示,移除多余的冲突的文件,也可以删除. 完成这些步骤以后,再次add,commit,push即可.2.接下来,我们就把上面创建好的本地项目提交到gitee码云上面
.表示当前目录下所有的文件或目录提交到上传队列[上传队列也叫"暂存区"] git add . 把本地上传队列的代码提交到本地仓库 git commit -m 项目初始化搭建" 给本地的git版本控制软件设置项目的远程仓库地址 git remote add origin https://gitee.com/mooluo/luffyproject.git 提交代码给远程仓库 git push -u origin master6.一些扩展指令
扩展: 1. 通过 git status 可以查看当前项目的代码版本状态 2. 通过 git reflog 可以查看代码版本日志[简单格式] 3. 通过 git log 可以查看代码版本日志[详细格式] 4. 删除分支 git branch -D 分支名称 注意,不能删除当前所在分支,必须切换到别的分支上才能进行删除 '''到此,成功提交了代码版本到gitee平台。
7..gitignore
所以,我们针对一些不需要的文件,可以选择从代码版本中删除,并且使用
.gitignore
把这些垃圾文件过滤掉。git rm 文件 删除单个文件 git rm -rf 目录 递归删除目录 以下操作建议通过终端来完成,不要使用pycharm提供,否则删除.idea还会继续生成。 git rm -rf .idea git rm db.sqlite3 注意,上面的操作只是从项目的源代码中删除,但是git是不知情的,所以我们需要同步。 git add . git commit -m 删除不必要的文件或目录 git push -u origin master
我们在开发时我们经常会使用pycharm的提供的git管理工具来完成代码的拉取和推送。
4.日志配置
在settings/dev.py文件中追加如下配置:
日志配置 LOGGING = { version': 1,使用的python内置的logging模块,那么python可能会对它进行升级,所以需要写一个版本号,目前就是1版本 disable_existing_loggers': False,1)">是否去掉目前项目中其他地方中以及使用的日志功能,但是将来我们可能会引入第三方的模块,里面可能内置了日志功能,所以尽量不要关闭。 formatters': { 日志记录格式 verboselevelname等级,asctime记录时间,module表示日志发生的文件名称,lineno行号,message错误信息 format%(levelname)s %(asctime)s %(module)s %(lineno)d %(message)s },1)">simple: { %(levelname)s %(module)s %(lineno)d %(message)sfilters过滤器:可以对日志进行输出时的过滤用的 require_debug_true在debug=True下产生的一些日志信息,要不要记录日志,需要的话就在handlers中加上这个过滤器,不需要就不加 ()django.utils.log.requiredebugTruerequire_debug_false和上面相反 django.utils.log.requiredebugFalsehandlers日志处理方式,日志实例 console在控制台输出时的实例 levelDEBUG日志等级;debug是最低等级,那么只要比它高等级的信息都会被记录 ': ['],1)">在debug=True下才会打印在控制台 classlogging.StreamHandler使用的python的logging模块中的StreamHandler来进行输出 formatterfileINFOlogging.handlers.RotatingFileHandler 日志位置,日志文件名,日志保存目录必须手动创建 filename': os.path.join(os.path.dirname(BASE_DIR),1)">logs/luffy.log"),1)">注意,你的文件应该有读写权限。 日志文件的最大值,这里我们设置300M maxBytes': 300 * 1024 * 1024 日志文件的数量,设置最大日志数量为10 backupCount': 10 日志格式:详细格式 encodingutf-8 设置默认编码,否则打印出来汉字乱码 },1)"> 日志对象 loggers: { django': { 和django结合起来使用,将django中之前的日志输出内容的时候,按照我们的日志配置进行输出, 将来项目上线,把console去掉 propagate': True,1)">冒泡:是否将日志信息记录冒泡给其他的日志处理系统,工作中都是True,不然django这个日志系统捕获到日志信息之后,其他模块中可能也有日志记录功能的模块,就获取不到这个日志信息了 5.异常处理新建utils/exceptions.py
from rest_framework.views exception_handler from django.db DatabaseError from rest_framework.response Response from rest_framework status logging logger = logging.getLogger() def custom_exception_handler(exc,context): 自定义异常处理 :param exc: 异常类 :param context: 抛出异常的上下文 :return: Response响应对象 """ 调用drf框架原生的异常处理方法 response = exception_handler(exc,context) if response is None: view = context[view] if isinstance(exc,DatabaseError): 数据库异常 logger.error([%s] %s' % (view,exc)) response = Response({message服务器内部错误'},status=status.HTTP_507_INSUFFICIENT_STORAGE) return responseREST_FRAMEWORK = { 异常处理 EXCEPTION_HANDLERluffyapi.utils.exceptions.custom_exception_handler6.创建数据库create database luffy default charset=utf8mb4; -- utf8也会导致有些极少的中文出现乱码的问题,MysqL5.5之后官方才进行处理,出来了utf8mb4,这个是真正的utf8,能够容纳所有的中文,其实一般情况下utf8就够用了。create user luffy_user identified by 'luffy; grant all privileges on luffy.* to luffy_user'@%; flush privileges; MysqL -u luffy_user -pluffy select user(); #luffy_user3.配置数据库连接
DATABASES =defaultENGINEdjango.db.backends.MysqLHOST127.0.0.1PORT": 3306USERluffy_userPASSWORDluffyNAME在项目主模块的__init__.py
中导入pyMysqL5.调整错误
luffyapi项目后端基本就配置完毕,下面就来进行luffyapi的前端配置:luffyapi前端配置传送门
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。
相关推荐