=Start=
缘由:
这是一个看脸的社会,对于开发来说也是这样:即便后台逻辑做的屌炸天,但是如果没有一个漂亮的前端展示界面,对于别人来说,还是太low了……他们才不会管你花了多少精力去解决后端复杂的逻辑,只会丢下一句——这不是我想要的。
没办法,学习一下如何美化前端界面吧。对于人手不足的后端开发团队来说,花时间去学习CSS、JavaScript、PS等技术,然后自己设计前端界面,这显然是不现实的;一个比较靠谱的办法就是,选用网上现成的Bootstrap模板,然后在其基础上按需修改。下面就是在一个Django项目中套用Bootstrap模板的过程记录。
正文:
1.Django环境搭建
我的系统是CentOS 6.5,用的Python是自己编译安装的Python 2.7,PIP也是手动安装的,Django的搭建过程主要参考:Django 环境搭建,是用的PIP方式进行Django的安装,下面主要记录一下在此过程中碰到的问题。
问题一:django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3
默认情况下Python是会安装 sqlite3 模块的,但是,如果你没有 sqlite-devel 环境就不行,所以需要先安装 sqlite-devel :
$ sudo yum install sqlite-devel
然后重新编译安装 Python :「./configure && make && sudo make install」即可。
2.Django基本命令与模板
#1. 新建一个 django project django-admin.py startproject ui_project cd ui_project/ #2. 新建 app django-admin.py startapp ui_app vim ui_project/settings.py #将新定义的app名称(ui_app)加到settings.py中的INSTALL_APPS中 vim ui_app/views.py #定义视图函数(访问页面时的内容) vim ui_project/urls.py #定义视图函数相关的URL[即:访问什么网址对应什么内容] #3. 同步数据库 python manage.py makemigrations python manage.py migrate #4. 运行测试 python manage.py runserver python manage.py runserver 0.0.0.0:8080
# http://www.ziqiangxuetang.com/django/django-template.html # http://www.ziqiangxuetang.com/django/django-template2.html #步骤一 $ vim ui_app/views.py #定义视图函数(访问页面时的内容) from django.shortcuts import render def index(request): return render(request, 'index.html') #步骤二 $ mkdir -p ui_app/templates #创建templates目录用于存放HTML模板文件 $ echo "Hello, Django!" > ui_app/templates/index.html #编辑HTML模板文件 #步骤三 $ vim ui_project/urls.py #定义视图函数相关的URL urlpatterns = [ url(r'^$', ui_app.views.index, name='index'), url(r'^admin/', include(admin.site.urls)), ]
3.套用Bootstrap模板
在GitHub上面有两个开源的项目用来整合Django和Bootstrap:
- https://github.com/dyve/django-bootstrap-toolkit #对应bootstrap 2.0
- https://github.com/dyve/django-bootstrap3 #对应bootstrap 3.0
但是使用这些插件的话,会增加额外的学习成本,所以我偏向于使用原生的方式调用Bootstrap模板。
因为Bootstrap就是一堆css和js以及字体文件,并且属于静态资源,所以我们只需要配置好Django的静态文件访问路径,能够让templates里面的代码访问到Bootstrap相关的文件即可。
因为我选用的Bootstrap模板是ace,这里就直接说一下我是如何将ace模板用在Django项目上的:
#在ui_project目录下新建一个叫做assets的目录用于存放静态文件 $ git clone https://github.com/bopoda/ace.git $ cp -r ace/assets/ . $ cp -f ace/index.html ui_app/templates/ $ vim ui_project/settings.py #添加下面的内容 PROJECT_ROOT = os.path.join(os.path.abspath(os.path.dirname(__file__)), '..') STATICFILES_DIRS = ( os.path.join(BASE_DIR, "assets"), )
然后去浏览器上访问: http://127.0.0.1:8080/ 看看效果,或者通过访问 http://127.0.0.1:8080/assets/css/ace.min.css 看Django是否能够正确找到静态文件。
上面这种使用的是Django自带的Web服务器,如果需要在线上跑,建议使用Nginx+uwsgi的方式,具体可以参考之前记录的一篇文章「基于Nginx和uwsgi在CentOS上部署Django」,在这种情况下使用Bootstrap模板的话,可以在Nginx的配置文件里面加一个location,让templates里面的HTML代码能够访问到Bootstrap相关的CSS/JS文件即可。比如:
server { listen 80; server_name localhost; # ... location /assets { alias /opt/learn_django/ui_project/assets; } #... }
参考链接:
- Django 基础教程
- 整合django和bootstrap框架
- Django实战(5):引入bootstrap,设置静态资源
- 想用Django+ Bootstrap写一个网站, 有哪些比较系统完整的书或者视频可以参考?
=END=
《 “在Django项目中使用Bootstrap模板” 》 有 10 条评论
除了常见的ace那个模板,还可以看看inspinia这个Bootstrap这个模板(要收费,不过可以在GitHub上找到一些免费的版本):
https://github.com/djom20/inspinia/tree/master/Static_version
https://github.com/clong365/inspinia-1/tree/master/assets
https://github.com/Niqpue/inspinia-master
https://github.com/derekm228/Full_Inspinia/tree/master/Static_Full_Version
建议将静态资源文件和模板文件分开存放:`django_proj/django_app/static` & `django_proj/django_app/templates`。(可能需要修改templates中的HTML文件的href)这样可以和Flask应用的开发公用一套Bootstrap模板。
==
首先,把Bootstrap模板中的HTML文件都拷贝到 `django_proj/django_app/templates` 目录下,使Django能够找到;
然后,在 `django_proj/django_app/` 目录下新建一个名为 `static` 的目录用于存放静态文件(.css/.js/.png/…),并且最好在static下面建几个子目录(比如:css/fonts/images/js),并将要用到的文件分别拷贝至对应子目录中,方便分类;
之后,启动一个简单的Django模板应用,访问一下页面,看哪些资源没有找到,然后有针对性的移动、下载至对应目录即可(必要时可以新建一个模板处理公共资源的请求)。
FontAwesome 通过组合创建新图标
http://blog.meathill.com/tech/fe/css/font-awesome-stack-icons.html
前端 101:给不了解前端的同学讲前端
https://mp.weixin.qq.com/s?__biz=MzU5NDE1MDk3NA==&mid=2247483694&idx=1&sn=4c2cf008ae17a35aa4e076592cd8af6a
Bootstrap Glyphicons 字体图标
http://v3.bootcss.com/components/
http://www.runoob.com/bootstrap/bootstrap-glyphicons.html
一套绝佳的图标字体库和CSS框架
http://fontawesome.dashgame.com/
Bootstrap入门笔记之(二)表单
http://blog.guowenfh.com/2016/01/18/Bootstrap-02-form/
为 Bootstrap 添加更多自定义图标
https://www.lovelucy.info/custom-icons-for-twitter-bootstrap.html
从1万篇文章中挑出的40篇最棒的 Vue 学习指南(2018版)
https://zhuanlan.zhihu.com/p/33642051
https://hijiangtao.github.io/2018/02/06/learn-vue-js-from-top-articles-for-the-past-year-v-2018/
想用Django+ Bootstrap写一个网站, 有哪些比较系统完整的书或者视频可以参考?
https://www.zhihu.com/question/29804463/answer/46005463
https://www.zhihu.com/topic/19572108/top-answers
运维故障管理系统
https://github.com/geekwolf/fms
http://www.simlinux.com/2017/09/12/devops-fms.html
`
1. 背景说明
2. 项目说明
3. 功能说明
4. 部署配置
5. 初始化数据
6. Demo
`
Django 静态文件
https://code.ziqiangxuetang.com/django/django-static-files.html
Django中的HTML渲染(涉及到 js/css/img 等静态文件)
https://docs.djangoproject.com/en/1.8/howto/static-files/
`
# 在应用 app_name 所在目录下创建 static 目录用于存放一些js/css/img等静态文件
# 静态文件放在对应的 app 下的 static 文件夹中 或者 STATICFILES_DIRS 中的文件夹中。
# 当 DEBUG = True 时,Django 就能自动找到放在里面的静态文件。(Django 通过 STATICFILES_FINDERS 中的“查找器”,找到符合的就停下来,寻找的过程 类似于 Python 中使用 import xxx 时,找 xxx 这个包的过程)。
# app_name/views.py
def test(request):
return render(request, ‘test.html’)
# app_name/static/test.html
test
查询
`
Django+Echarts画图实例
https://mp.weixin.qq.com/s/A6GPJlAxvEopUsimWaNcqA
Django使用Signals监测model字段变化发送通知
https://mp.weixin.qq.com/s/cMxdAfsTno56ixurmD4KXA