# Django-Blog **Repository Path**: yazutang/Django-Blog ## Basic Information - **Project Name**: Django-Blog - **Description**: 博客项目 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-04-21 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Django-Tutorial #### 介绍 通过创建博客项目学习Django Web框架 Python版本3.8.0 Django版本为3.0.6 Python项目环境和依赖包管理使用pipenv,为了使软件安装速度更快切换为国内源,如: 修改Pipfile中的url = "https://pypi.douban.com/simple" #### 主要功能实现 + 登录注册 + 登录认证码 + 文章增删改查(CRUD) + 个人中心页面及编辑个人资料 + 文章多级评论 + 文章点赞 + 统计文章浏览次数 + 热门文章,文章分类,最近浏览和日期归档 + 全文搜索,中文分词 + 正文编辑富文本(Markdown) + 自定制用户模型使用邮箱登录 + 消息通知 + 单元测试 #### 安装 ``` git clone https://gitee.com/yazutang/Django-Tutorial.git cd Django-Tutorial pipenv install # 创建虚拟环境并安装第三方库 pipenv shell # 启动虚拟环境 cd myweb # 使用sqlite python manage.py migrate # 根据数据库迁移文件写入数据库 python manage.py runserver # 运行开发服务器并访问http://localhost:8000即可 # 要使用PostgreSQL数据库,因为使用了PostgreSQL中的to_char函数 # 或者使用MySQL,只需要更改数据库配置,和搜索to_char,把它改date_format函数即可 # 指定使用本地开发用的配置文件local.py python manage.py migrate --settings=myweb.settings.local python manage.py runserver --settings=myweb.settings.local python manage.py createsuperuser --settings=myweb.settings.local # 如果项目启动错误 # pipenv install six # 把site-packages/six.py复制到site-packages/django/utils/目录下 # 将site-packages/haystack/inputs.py 中 from django.utils.encoding import force_text, python_2_unicode_compatible # 改为 from django.utils.encoding import force_text from django.utils.six import python_2_unicode_compatible ``` #### 单元测试 ``` $ cd myweb # manage.py所在的目录 $ pytest ``` #### 第三方库说明 + Pillow 进行图片文件处理 + django-crispy-forms 美化form表单 + django-mptt 实现多级评论功能 + django-haystack 开源搜索框架 + whoosh 全文搜索引擎 + six 用来兼容Python2和Python3的模块 + jieba 中文分词 + django-ckeditor 富文本编辑器 + pygments 语法高亮 + django-extensions management命令扩展,数据库字段扩展,admin后台扩展等 + itsdangerous 生成临时身份令牌 + django-debug-toolbar 查看sql信息,http等相关信息 + django-notifications-hq 消息通知 + python-decouple 解析程序配置文件(.init, .env文件) + django-redis 使Django支持 Redis cache/session后端的全功能组件 + pytest Python测试框架 + pytest-django 为Django应用程序和项目添加了pytest支持 + mixer mixer是对象生成工具包 + pytest-xdist 支持多进程 (pytest -n <进程数量>) #### 问题 1. Django中ORM过滤时objects.filter()无法对月份过滤(mysql) ```python >>> from blog.models import Post >>> Post.objects.filter(pub_date__year=2020, pub_date__month=5) ``` 具体解决方法查看下面连接说明: https://chowyi.com/Django%E4%BD%BF%E7%94%A8MySQL%E5%90%8E%E7%AB%AF%E6%97%A5%E6%9C%9F%E4%B8%8D%E8%83%BD%E6%8C%89%E6%9C%88%E8%BF%87%E6%BB%A4%E7%9A%84%E9%97%AE%E9%A2%98%E5%8F%8A%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/ https://www.cnblogs.com/panlq/p/8868108.html https://blog.csdn.net/qq_27361945/article/details/80580795 2. django-hasystack使用时,执行python manage.py rebuild_index出现模块导入失败: ImportError: cannot import name 'six' from 'django.utils', 解决方法,可以参考下面链接: https://blog.csdn.net/weixin_44485643/article/details/104243048 执行pipev --venv命令找到虚拟环境所在目录,再进行文件复制。 #### 其他 + 语法高亮设置 ``` pipenv install Pygments # 安装 pygmentize -S monokai -f html -a .codehilite > monokai.css # 生成css文件 # 把monokai.css文件拷贝到static目录下,并引用到HTML文件中即可。 # 查看可用的样式 >>> from pygments.styles import STYLE_MAP >>> STYLE_MAP.keys() dict_keys(['default', 'emacs', 'friendly', 'colorful', 'autumn', 'murphy', 'manni', 'monokai', 'perldoc', 'pastie', 'borland', 'trac', 'native', 'fruity', 'bw', 'vim', 'vs', 'tango', 'rrt', 'xcode', 'igor', 'paraiso-light', 'paraiso-dark', 'lovelace', 'algol', 'algol_nu', 'arduino', 'rainbow_dash', 'abap', 'solarized-dark', 'solarized-light', 'sas', 'stata', 'stata-light', 'stata-dark', 'inkpot']) # 有用链接 https://blog.csdn.net/weixin_43217710/article/details/82777029 ``` * django-ckeditor的使用有用链接 [https://www.jianshu.com/p/65d2a748634b](https://www.jianshu.com/p/65d2a748634b) [https://www.cnblogs.com/hupeng1234/p/6639122.html](https://www.cnblogs.com/hupeng1234/p/6639122.html) [https://pypi.org/project/django-ckeditor/#outside-of-django-admin](https://pypi.org/project/django-ckeditor/#outside-of-django-admin)