99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學(xué)院 頭像
蘋果6袋
6
麥子學(xué)院

在Django項(xiàng)目中套用Bootstrap模板過程

發(fā)布時(shí)間:2016-07-03 00:36  回復(fù):0  查看:7040   最后回復(fù):2016-07-03 00:36  

這是一個(gè)看臉的社會(huì),對(duì)于開發(fā)來說也是這樣:即便后臺(tái)邏輯做的屌炸天,但是如果沒有一個(gè)漂亮的前端展示界面,對(duì)于別人來說,還是太low……他們才不會(huì)管你花了多少精力去解決后端復(fù)雜的邏輯,只會(huì)丟下一句——這不是我想要的。

沒辦法,學(xué)習(xí)一下如何美化前端界面吧。對(duì)于人手不足的后端開發(fā)團(tuán)隊(duì)來說,花時(shí)間去學(xué)習(xí)CSS、JavaScript、PS等技術(shù),然后自己設(shè)計(jì)前端界面,這顯然是不現(xiàn)實(shí)的;一個(gè)比較靠譜的辦法就是,選用網(wǎng)上現(xiàn)成的Bootstrap模板,然后在其基礎(chǔ)上按需修改。下面就是在一個(gè)Django項(xiàng)目中學(xué)習(xí)Bootstrap http://www.maiziedu.com/course/543/模板套用的過程記錄。

 

1.Django環(huán)境搭建

我的系統(tǒng)是CentOS 6.5,用的Python是自己編譯安裝的Python 2.7,PIP也是手動(dòng)安裝的,Django的搭建過程主要參考:Django 環(huán)境搭建,是用的PIP方式進(jìn)行Django的安裝,下面主要記錄一下在此過程中碰到的問題。

問題一:django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

默認(rèn)情況下Python是會(huì)安裝 sqlite3 模塊的,但是,如果你沒有 sqlite-devel 環(huán)境就不行,所以需要先安裝 sqlite-devel
$ sudo yum install sqlite-devel

然后重新編譯安裝 Python :「./configure && make && sudo make install」即可。

 

2.Django基本命令與模板

在Django項(xiàng)目中套用Bootstrap模板過程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#1. 新建一個(gè) 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    #定義視圖函數(shù)(訪問頁面時(shí)的內(nèi)容)

vim ui_project/urls.py #定義視圖函數(shù)相關(guān)的URL[即:訪問什么網(wǎng)址對(duì)應(yīng)什么內(nèi)容]

 

#3. 同步數(shù)據(jù)庫

python manage.py makemigrations

python manage.py migrate

 

#4. 運(yùn)行測試

python manage.py runserver

python manage.py runserver 0.0.0.0:8080

在Django項(xiàng)目中套用Bootstrap模板過程

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# http://www.ziqiangxuetang.com/django/django-template.html

# http://www.ziqiangxuetang.com/django/django-template2.html

 

#步驟一

$ vim ui_app/views.py    #定義視圖函數(shù)(訪問頁面時(shí)的內(nèi)容)

    from django.shortcuts import render

    def index(request):

        return render(request, 'index.html')

 

#步驟二

$ mkdir -p ui_app/templates #創(chuàng)建templates目錄用于存放HTML模板文件

$ echo "Hello, Django!" > ui_app/templates/index.html   #編輯HTML模板文件

 

#步驟三

$ vim ui_project/urls.py #定義視圖函數(shù)相關(guān)的URL

    urlpatterns = [

        url(r'^$', ui_app.views.index, name='index'),

        url(r'^admin/', include(admin.site.urls)),

    ]

 

3.套用Bootstrap模板

GitHub上面有兩個(gè)開源的項(xiàng)目用來整合DjangoBootstrap

https://github.com/dyve/django-bootstrap-toolkit #對(duì)應(yīng)bootstrap 2.0

https://github.com/dyve/django-bootstrap3 #對(duì)應(yīng)bootstrap 3.0

但是使用這些插件的話,會(huì)增加額外的學(xué)習(xí)成本,所以我偏向于使用原生的方式調(diào)用Bootstrap模板。

因?yàn)?span>Bootstrap就是一堆cssjs以及字體文件,并且屬于靜態(tài)資源,所以我們只需要配置好Django的靜態(tài)文件訪問路徑,能夠讓templates里面的代碼訪問到Bootstrap相關(guān)的文件即可。

因?yàn)槲疫x用的Bootstrap模板是ace,這里就直接說一下我是如何將ace模板用在Django項(xiàng)目上的:

在Django項(xiàng)目中套用Bootstrap模板過程

1

2

3

4

5

6

7

8

9

10

11

#ui_project目錄下新建一個(gè)叫做assets的目錄用于存放靜態(tài)文件

$ 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

#添加下面的內(nèi)容

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是否能夠正確找到靜態(tài)文件。

上面這種使用的是Django自帶的Web服務(wù)器,如果需要在線上跑,建議使用Nginx+uwsgi的方式,具體可以參考之前記錄的一篇文章「基于NginxuwsgiCentOS上部署Django」,在這種情況下使用Bootstrap模板的話,可以在Nginx的配置文件里面加一個(gè)location,讓templates里面的HTML代碼能夠訪問到Bootstrap相關(guān)的CSS/JS文件即可。比如:

在Django項(xiàng)目中套用Bootstrap模板過程

1

2

3

4

5

6

7

8

9

10

11

server {

    listen      80;

    server_name localhost;

    # ...

 

    location /assets {

        alias /opt/learn_django/ui_project/assets;

    }

 

    #...

}

 

 

 

原文來自:crazyof.me 

您還未登錄,請(qǐng)先登錄

熱門帖子

最新帖子

?