1. 程式人生 > >Django創建完全獨立的APP

Django創建完全獨立的APP

djang urn include types view 項目結構 template def from

我們之前已經完成了項目的結構搭建,但是,在Django當中,我們強調的一個重要概念是app,比如Django自帶的admin就是一個成功的app典範,那麽我們應該如果整理自己的項目結構,才能讓我們的app真正的獨立出來,我們以之前的OurBlog項目為例:

為了項目的可遷移性,我們將靜態文件和模板文件的目錄創建到APP的目錄下,在app外部,也就是我們項目的根目錄下,我們創建一個空的靜態文件目錄:

技術分享圖片

然後在app當中的static和template當中創建和app同名的目錄來存放文件

技術分享圖片

註意,Django在配置完成之後,在執行收集靜態文件的命令之後,會自動檢索所有的app的目錄,然後將目錄下的static目錄下的文件收集到指定的路徑(這個路徑,在settings當中通過STATIC_ROOT來配置)下。所以,為了區分各個app的靜態文件,我們將app的靜態文件存放到static目錄下的app同名下的目錄當中。至於template創建和app同名的目錄的目的是區分各個APP下同名的HTML文件,比如:

Article/index.html

User/index.html

然後配置settings

OurBlog/OurBlog/settings.py

 1 # ...... 
 2 #安裝功能
 3 INSTALLED_APPS = (
 4     django.contrib.admin,
 5     django.contrib.auth,
 6     django.contrib.contenttypes,
 7     django.contrib.sessions,
 8     django.contrib.messages,
 9     django.contrib.staticfiles
, 10 Article, #我們自定義的功能 11 ckeditor, #Django ckeditor的功能 12 ckeditor_uploader, #Django ckeditor的上傳功能 13 ) 14 15 # ...... 16 17 #模板配置 18 TEMPLATES = [ 19 { 20 BACKEND: django.template.backends.django.DjangoTemplates, 21 DIRS: [ 22 ], 23 APP_DIRS
: True, #是否搜索app當中的模板目錄 24 OPTIONS: { 25 context_processors: [ 26 django.template.context_processors.debug, 27 django.template.context_processors.request, 28 django.contrib.auth.context_processors.auth, 29 django.contrib.messages.context_processors.messages, 30 ], 31 }, 32 }, 33 ] 34 35 # ...... 36 STATIC_ROOT = os.path.join(BASE_DIR,"static").replace("\\","/")

註意,我們修改的有這些,其他的配置和之前學習過程當中一樣

然後進行靜態文件的收集

命令:python manage.py collectstatic

技術分享圖片

技術分享圖片

然後,Django就會把app當中的靜態文件放到項目的靜態目錄下

技術分享圖片

這個時候我們的配置完成了,要調整的就是視圖當中模板文件的加載和前端今天文件的渲染了

/OurBlog/Article/views.py

 1 from django.shortcuts import render
 2 
 3 def base(request):
 4     return render(request, "Article/base.html")
 5 
 6 def index(request):
 7     return render(request, "Article/index.html")
 8 
 9 def myArticle(request):
10     return render(request, "Article/myArticle.html")
11 
12 def myPicture(request):
13     return render(request, "Article/myPicture.html")
14 
15 def aboutMe(request):
16     return render(request, "Article/aboutMe.html")
17 
18 def connectMe(request):
19     return render(request, "Article/aboutMe.html")

在這裏我們之前加載的文件是在根目錄下的template下,現在修改到了app下

訪問的時候也要註意前端樣式的加載

技術分享圖片

這樣我們再次訪問頁面,就發現已經把app獨立的靜態目錄開發功能編寫完成了。

效果如下:

技術分享圖片

10.2 項目路由優化

上面完成了靜態文件的優化,那麽接下來優化路由部分,路由本身優化有兩個方向,我們首先來看針對app獨立的優化,很簡單,在app當中創建獨立的路由文件,urls.py

1、 在app當中創建urls

技術分享圖片

2、 在app當中的urls當中導入url設置,設定路由

 1 #coding:utf-8
 2 
 3 from django.conf.urls import url
 4 from Article.views import *
 5 urlpatterns = [
 6     url(r^index/, index),
 7     url(r^myArticle/, myArticle),
 8     url(r^myPicture/, myPicture),
 9     url(r^aboutMe/, aboutMe),
10     url(r^connectMe/, connectMe),
11 ]

3、 在主url當中包含子url

from django.conf.urls import include, url

from django.contrib import admin



urlpatterns = [

    #........
url(r^article/, include(Article.urls)),

    #........
]

4、 然後進行訪問

技術分享圖片

大功告成,今晚吃雞!

Django創建完全獨立的APP