Skip to content

Oldhandsome/my_blog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

我的博客

始于2020年1月,经历过了2个半月,基本功能都算健全

  • 首页

  • 博客浏览页面

  • 标签页面

  • 博客搜索页面

  • 后台管理页面

想做的(未完成)

  • 评论功能
  • 点赞功能

前端页面和数据的渲染由Vue.js编写,而后端的数据提供端由python的DRF框架完成

用到的组件由

  • Django

  • DRF

    • 提供了丰富的视图类,例如APIVIew,将原有的Request对象进行了封装,并且豁免了CSRF_TOKEN,

    • 提供了定义序列化器的类和方法,根据Django ORM提供的数据进行自动序列化或是反序列化。

    而我用了ModelSerializer将Django ORM提供的数据进行序列化,提供给前端;在表单传入之后,通过ModelSerializer将数据反序列化,并校验保存。

    • 认证模块

      结合JWT模块,对X-TOKEN和A-TOKEN进行验证

    • 权限模块

    • 限流模块

      该限流模块为手写,没有用rest_framework自带的,并且将该限流模块是放入中间件中的。

    • 分页模块

      自定义一个分页类,继承了pagination.LimitOffsetPagination,只要确定重写四个属性即可

  • django-simple-captcha

    用于登录后台管理页面的生成验证码。在登录时,页面会像后端请求一个验证码。而后端的数据字段返回以下的数据结构

    {
    	id:id,
    	img:"",
    }
    # img是将产生的图片进行base64加密之后的字符串(需要将字节类型的字符串解码成UTF-8),将这个数据结构返回给前端。
    # 验证时,返回表单以及上面的id即可。
    
  • elasticsearch

    用于操作elasticsearch,因此在启动项目前需要保证elasticsearch的开启。在第一次启动时,会将数据库中的blog的标题和正文加载进elasticsearch,除此之外还有dictionary.txt(用爬虫爬的柯金斯字典)数据完成以英文字母为开头的提示的生成(用来当做英文的提示,本来还想来本新华辞典的做中文提示的),因此第一次执行该项目可能启动会有点久。

  • PyJWT

    用于生成json web token值的。第一个token值是在第一次进入首页时,前端js会自动请求一个token用于后端数据的普通访问。第二个token值是存储登录的邮箱的。

文件目录结构

——| Site
——|——| Blog # 应用
——|——|——| apps.py
——|——|——| models.py
——|——|——| modelserializer.py
——|——|——| urls.py
——|——|——| views.py
——|——| media # 用于存放头像等
——|——| middleware
——|——|——| auth.py
——|——|——| crossorigin.py
——|——|——| throttle.py
——|——| Site
——|——|——| settings.py # 配置文件
——|——| util
——|——|——| es.py # 结合ES与自己的文档搜索需求做的一个类,便于视图类调用
——|——|——| mypagination.py # 继承自LimitOffsetPagination,重写了四个属性,用作分页。
——|——|——| token.py # 结合PyJWT模块,创建json web token,用作验证
——|——| dictionary.txt # 用爬虫爬的柯金斯字典

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages