Django專案的建立及基本使用
辛苦堆砌,轉載請註明出處,謝謝!
Django是Python進行Web開發的框架,目前應用比較廣泛。使用Python進行Web開發,能夠很快的搭建所需的專案,可以運用於原型開發,也可以部署到實際的應用環境。
使用Django開發,首先要安裝Django模組,安裝過Python的系統,啟動命令列,執行
pip install django
即可完成Django的安裝。
安裝好Django,就可以開始我們的開發了,本文建立一個展示Hello xxx的Web頁面,xxx由GET引數指定。Django可以很快的完成專案的開發。
首先,建立專案,在希望建立專案的目錄執行
django-admin.py startproject hello
我們建立了專案名為hello的專案,此時hello目錄結構如下:
.
├── hello
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
我們執行
python manage.py runserver
此時,瀏覽器訪問http://localhost:8000/,應該可以看到我們的伺服器已經啟動了。顯示了一個Welcome to Django的頁面。
Django提倡基於應用作為單位進行開發,我們建立自己的應用,使用命令
python manage.py startapp say_hello
這樣,就建立了say_hello應用,當前目錄結構為:
.
├── hello
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── say_hello
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
可以看到,多出了一個say_hello目錄。下面開始我們的開發,首先在say_hello目錄下,新建一個templates目錄,其中建立say_hello.html頁面。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello</title>
</head>
<body>
<h1>Hello {{hello_words}}</h1>
</body>
</html>
頁面很簡單,我們使用了Django提供的模板,取hello_words引數渲染檢視,後面會看到如何賦值這個引數。現在有了頁面,我們需要做我們的控制器,在say_hello目錄下的views.py中新增函式
from django.shortcuts import render
def hello_page(request):
return render(
request,
'say_hello.html',
{'hello_words': request.GET.get('hello_words', "")}
)
使用了render函式,該函式會返回一個response物件,該物件中有經過渲染的html,我們這裡基於say_hello.html模板進行渲染,渲染的引數由字典表示,引數名為hello_words,內容是GET請求的hello_words的引數值,如果沒有引數值,則hello_words的值為""。
完成了控制器,設定一下url對映,開啟hello目錄下的urls.py,新增對映
from django.conf.urls import url
from django.contrib import admin
from say_hello import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', views.hello_page, name='hello_page'),
]
使用正則表示式^$,將傳送到根路徑下的請求轉交給home_page處理,就是上面實現的控制器,這裡Django使用檢視來表示控制器,實際上Django也是MVC架構,只是M對應的是實體類,V對應的是模板,也就是html檔案,控制器對應了views.py的定義。
現在執行程式,還是無法執行的,會報錯找不到say_hello.html,這是因為我們還需要註冊一下我們的應用,開啟settings.py檔案,在INSTALLED_APPS列表中新增一項"say_hello",如下
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'say_hello',
]
現在執行伺服器,瀏覽器輸入localhost:8000可以看到Hello,如果是使用http://localhost:8000/?hello_words=World,則可以看到Hello World.