Giter Club home page Giter Club logo

fansfood's Introduction

fansfood

一个美食制作教程和美食图片网站

前端使用:Bootstrap 搭建
后端开发环境:python3.6.2 + django2.2 + xadmin2(xadmin需独立安装)
部署:Nginx + uWSGI
网址:www.ifansfood.cc

网站页面展示

登录页面
login 首页
login 用户中心
login

数据来源

数据获取:使用 requests + bs4 + re
代理ip使用的是阿布云动态版
网站数据来源:制作教程(美食天下 https://www.meishichina.com/)+ 图片(https://www.pexels.com/zh-cn/
爬虫代码的位置:/apps/assist_function/data_crawler, 文件保存路径相关的需要自己修改
爬取的数据是直接存储在 MongoDB 中,根据模型的设计,再进行分割转储到 MySQL 中
由于数据分为图片和其他一些文字信息,太大所以未上传至github,如果需要可以联系我,我将图片和mysql的文件发给你 我的邮箱:[email protected]

xadmin 的适配 Django2.2 存在一些问题,需要作出一些函数修改

安装:这个是最快的,git 的方式安装太慢了

pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

适配性修改:参见 https://github.com/vip68/xadmin_bugfix
我修改的地方主要是出现下面这种错误的地方:

TypeError at /xadmin/xadmin/userwidget/add/ render() got an unexpected keyword argument 'renderer'  

参考 https://github.com/vip68/xadmin_bugfix/commit/344487d80e6ff830f39b3526ee024231921c074d 可以解决这个问题

我每个xadmin模块都点开看了一下,保险起见把所有的 render 函数都增加一个renderer=None ,没有发送发生过这个bug
如果集成了ueditor富文本编辑器也会报这个错误,原因是同样的

找到UEditor/widgets.py,167行
--- def render(self, name, value, attrs=None):
+++ def render(self, name, value, attrs=None, renderer=None):
参考:https://github.com/sshwsfc/xadmin/issues/621

还有一个就是后台自定义图标的修改:

原来是用的font-awwsome的版本太低,改成4.7版的
将目录中的 font-awesome-4.7.0 下的两个文件夹覆盖 
    venv/Lib/site-packages/xadmin/static/xadmin/vendor/font-awesome 下的目录即可
然后根据自己的喜欢上 https://fontawesome.com/v4.7.0/icons/ 选择食用

翻页插件的修改

使用的是django第三方插件 pure-pagination

项目主页:https://github.com/jamespacileo/django-pure-pagination

由于我的用户中心展示收藏的时候有两个页面分页,所以需要对页面分页的对应的键进行区分,修改如下:

19行 
--- def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True, request=None):
+++ def __init__(self, object_list, per_page, orphans=0, allow_empty_first_page=True, request=None, page_type='page'):
26行
+++ self.page_type = page_type
206行 
--- self.base_queryset['page'] = page_number
+++ self.base_queryset[self.page_type] = page_number
210行
--- return 'page=%s' % page_number
+++ return '{}={}'.format(self.page_type, page_number)

这样,在分页对象示例化的时候,通过设定page_type参数就可以区分不同的分页对象了

mysql 字符编码的问题

如果是用通过navicat来创建数据库的化,一定要统一使用utf8mb4编码,默认的utf有些字符无法识别(比如emoji图标),导致字符编码错误
部署的时候,在数据库数据转移才暴露出来,因为这个编码的问题,浪费了半天的时间

fansfood's People

Contributors

fandiandian avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.