0x01
django是一個python打造的web應用框架,借python的快速開發對django進行學習。
我這裏使用的 樹莓派搭載kali_4.9.59 + python2.7 進行測試
0x02 準備工作
在項目開發中,每個項目常會使用不一樣的開發環境,爲了將每個項目不一樣的開發環境隔離開來,可在同一臺開發機上使用virtualenv給每個項目創建單獨的開發環境。
A、建立開發虛擬環境
1、安裝virtualenv
~# pip install virtualenv
安裝完成之後會提供一個命令行工具 virtualenv
2、創建工作目錄 並使用virtualenv初始化
~# mkdir workspace
~# virtualenv django_study
創建完成之後會生成對應項目名稱的文件夾,我們進入文件夾的bin目錄開啓virtualenv環境
~# cd django_study/bin
~/django_study/bin$ source ./activete
(django_study) ~/django_study/bin#
可以看到前面多了一對括號包含了目錄名,表示當前已經處於virtualenv虛擬環境下
現在就可以開始進行項目的開發了,不用擔心項目因爲各種環境安裝過多造成的污染
B、django
1、安裝django
首先安裝django,安裝完成之後會提供一個django-admin的命令行工具進行項目管理
在virtualenv環境下進行安裝的所有python環境安裝包都會安裝到當前的virtualenv環境,對系統自身的環境沒有任何影響,可以通過查看以上的django_study目錄。
然後需要使用django-admin初始化一個項目目錄
(django_study) ~/# pip install django
(django_study) ~/# django-admin startproject django_workspace
2、運行django並進行開發
初始化完成後,會生成一個項目文件夾,包含一個項目名的目錄和manage.py的管理工具。
django可以在運行過程中修改項目文件,它自身會實時刷新更改後的文件,所以免去了文件被更改後需要重新啓動的繁瑣工作。
(django_study) ~/# cd django_workspace
(django_study) ~/django_workspace/# ./manage.py runserver 0.0.0.0:9999
此時我們的django框架已經運行起來了,端口號爲9999,可以使用瀏覽器訪問一下
2、創建應用
運行起來之後,我們就可以開始建立我們自己的應用
比如我建立一個hello的應用
(django_study) ~/django_workspace/# django-admin start hello
建立完成之後會生成相應的app目錄
本次體驗我們首先寫一個簡單的hello world
主要改動的文件如下
- hello/views.py
- templates/index.html
- django_workspace/urls.py
- django_workspace/settings.py
0x03 初體驗
我準備了一份index.html的hello文件,並實現訪問hello時則響應我的hello請求,訪問index則返回index.html靜態頁面兩個簡單的功能。
1、訪問 http://ip/hello , 返回 hello
2、訪問 http://ip/index , 返回一個靜態頁面
1、準備index.html文件
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello,world</title>
</head>
<body>
<h1>Hello </h1>
<p>World</p>
</body>
</html>
在django目錄下新建templates文件夾,將index.html放入文件夾內
2、hello/views.py 的修改
此文件是我們應用的視圖文件,當我們從瀏覽器中訪問我們的應用時,都由此文件進行控制
比如別人訪問我們的某個鏈接地址,我們希望獲取GET或POST提交的參數,並且根據url執行對應操作,或返回某個靜態頁面,都在此文件中進行控制,以下內容爲新增內容,非覆蓋添加
from django.http import HttpResponse
def hello(request):
return HttpResponse('hello')
def index(request):
return render(request, "index.html")
3、django_workspace/urls.py 的修改
此文件用於配置url鏈接,每一個url地址對應一個方法,在上述第2個步驟中實現該方法
from django.conf.urls import url
from django.contrib import admin
from hello import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^hello', views.hello),
url(r'^index', views.index),
]
url指定爲 hello 對應到 views.hello方法
url指定爲 index 對應到 views.index方法
4、django_workspace/settings.py 的配置
我主要修改了以下幾個參數
1. 配置允許被訪問的地址
ALLOWED_HOSTS = ["*"]
2. 添加應用
INSTALLED_APPS = [
'hello',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
3. 增加模版路徑
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\\', '/'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
這裏附上一份簡單的配置說明
BASE_DIR // 根目錄
DEBUG // 調試開關,開發模式下爲True
INSTALLED_APPS // APP路徑,默認添加同名app名稱即可
DATABASES // 數據庫配置,默認SQLITE3,如果使用MYSQL需要另行配置,此處不做闡述
ALLOWED_HOSTS // 允許被訪問的IP,此處可在括號內填星號,表示允許所有IP
STATIC_URL // 靜態文件臨時調用目錄
STATICFILES_DIRS // 靜態文件目錄
MIDDLEWARE // 中間件,自己寫的中間件要填在系統自帶中間件之後
TEMPLATES // 模版
0x04 結果
1、hello
2、index.html