首頁 > 軟體

使用Django框架建立專案

2022-06-10 22:04:26

本章我們將介紹Django 管理工具及如何使用 Django 來建立專案,第一個專案我們以 HelloWorld 來命令專案。

一、Django 管理工具

安裝 Django 之後,您現在應該已經有了可用的管理工具 django-admin.py。我們可以使用 django-admin.py 來建立一個專案:

我們可以來看下django-admin 的命令介紹:

$ django-admin.py

二、建立第一個專案

使用 django-admin.py 來建立 HelloWorld 專案:

django-admin.py startproject HelloWorld

建立完成後我們可以檢視下專案的目錄結構:

$ cd HelloWorld/
$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- asgi.py
|   |-- settings.py
|   |-- urls.py
|   `-- wsgi.py
`-- manage.py

目錄說明:

  • HelloWorld: 專案的容器。
  • manage.py: 一個實用的命令列工具,Django管理主檔案。
  • HelloWorld/__init__.py: 一個空檔案,告訴 Python 該目錄是一個 Python 包。
  • HelloWorld/asgi.py: 一個 ASGI 相容的 Web 伺服器的入口,以便執行你的專案。
  • HelloWorld/settings.py: 專案的設定/組態檔。
  • HelloWorld/urls.py: 專案的URL路由檔案; 一份由 Django 驅動的網站"目錄"。
  • HelloWorld/wsgi.py: 一個 WSGI 相容的 Web 伺服器的入口,以便執行你的專案。

接下來我們進入 HelloWorld 目錄輸入以下命令,啟動伺服器:

manage.py runserver 0.0.0.0:8000

0.0.0.0 讓其它電腦可連線到開發伺服器,8000 為埠號。如果不說明,那麼埠號預設為 8000。

在瀏覽器輸入你伺服器的 ip(這裡我們輸入本機 IP 地址: 127.0.0.1:8000) 及埠號,如果正常啟動,輸出結果如下:

三、檢視和 URL 設定

在先前建立的 HelloWorld 目錄下的 HelloWorld 目錄新建一個 views.py 檔案,並輸入程式碼:

from django.http import HttpResponse #需要匯入HttpResponse模組

def hello(request):  # 定義Hello函數。request引數必須有,名字類似self的預設規則,可以修改,它封裝了使用者請求的所有內容
    return HttpResponse("Hello world ! ") #不能直接字串,必須是由這個類封裝,此為Django規則

接著,繫結 URL 與檢視函數。開啟 urls.py 檔案,刪除原來程式碼,將以下程式碼複製貼上到 urls.py 檔案中:

from django.contrib import admin
from django.urls import path
from django.conf.urls import url

from mytest import views  # 首先需要匯入對應APP的views

urlpatterns = [
    path('admin/', admin.site.urls),  # admin後臺路由
    url(r'^$', views.hello),  # 你定義的路由,第一個引數為引號中的正規表示式,第二個引數業務邏輯函數(當前為views中的hello函數)
]

整個目錄結構如下:

$ tree
.
|-- HelloWorld
|   |-- __init__.py
|   |-- __init__.pyc
|   |-- settings.py
|   |-- settings.pyc
|   |-- urls.py              # url 設定
|   |-- urls.pyc
|   |-- views.py              # 新增的檢視檔案
|   |-- views.pyc             # 編譯後的檢視檔案
|   |-- wsgi.py
|   `-- wsgi.pyc
`-- manage.py

完成後,啟動 Django 開發伺服器,並在瀏覽器存取開啟瀏覽器並存取:

我們也可以修改以下規則:

from django.urls import path
 
from . import views
 
urlpatterns = [
    path('hello/', views.hello),
]

通過瀏覽器開啟 http://127.0.0.1:8000/hello,輸出結果如下:

注意:專案中如果程式碼有改動,伺服器會自動監測程式碼的改動並自動重新載入,所以如果你已經啟動了伺服器則不需手動重啟。

四、path() 函數

Django path() 可以接收四個引數,分別是兩個必選引數:route、view 和兩個可選引數:kwargs、name。

語法格式:

path(route, view, kwargs=None, name=None)
  • route: 字串,表示 URL 規則,與之匹配的 URL 會執行對應的第二個引數 view。
  • view: 用於執行與正規表示式匹配的 URL 請求。
  • kwargs: 檢視使用的字典型別的引數。
  • name: 用來反向獲取 URL。

如果是 Django >= 2.0 的版本,path() 函數無法匹配正規表示式,需要使用 re_path() 即可匹配正規表示式:

from django.urls import re_path 
from . import view 
urlpatterns = [
    re_path(r'^hello$',view.hello),
]

五、使用PyCharm建立Django專案

PyCharm是一種Python IDE,帶有一整套可以幫助使用者在使用Python語言開發時提高其效率的工具,比如偵錯、語法高亮、Project管理、程式碼跳轉、智慧提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高階功能,以用於支援Django框架下的專業Web開發。剛玩Python或Django的朋友,如果沒有自己熟悉的IDE,建議直接使用這個。PyCharm可跨平臺,支援市面流行的作業系統。

下面,我教大家使用pycharm建立自己的第一個django專案。

1、開啟PyCharm,新建專案

介面講解:

點選建立之後,PyCharm自動幫我們建立一個虛擬環境和安裝最新版的Django。

安裝成功之後,我們剛才指定的目錄下就多出一個untiltled4資料夾。開啟untiltled4資料夾。

這就是Django的目錄結構,其中

templates資料夾是存放模板檔案的,

untiltled4資料夾放的是Django的一些組態檔。

manage.py檔案則是對django-admin.py的簡單包裝的一個檔案,通過它能執行一些簡單的命令。

venv資料夾就是virtualenv虛擬環境目錄,venv資料夾不是django原始碼裡的東西,只是我們建立虛擬環境時指定到這個目錄下了而已。

我們在建立Django專案的時候,也可以不用在More Settings裡建立APP和指定templates資料夾。

我們可以手動通方法建立。

2、通過命令列,新增新的APP。

點選PyCharm下方的Terminal,看下圖:

注意命令列前面的 (venv)出現這個,表示我們是在virtualenv虛擬環境下操作,如果沒有,或者虛擬環境名和我們建立的名稱不一致,說明PyCharm設定錯誤,我們輸入任何命令對剛才我們建立的專案來說是無效的。

我們通過命令列,進入我們的專案目錄,然後輸入

python manage.py startapp mytest

建立一個叫 mytest的APP。

或者從主選單中,選擇“工具”執行manage.py task,在Django控制檯對話方塊中,鍵入startapp startapp mytest.

回車之後我們就能看到,我們的專案目錄裡多出一個mytest資料夾。

關於更多的一些Django常用的命令,大家可以看看這篇文章:Django常用命令

3、遷移資料庫。

在Terminal下輸入下面的命令,生成和同步資料庫。

python manage.py makemigrations
python manage.py migrate

4、啟動Django專案

點選“執行”按鈕

專案啟動成功,然後我們通過瀏覽器存取http://127.0.0.1:8080/

這樣,我們的第一個Django專案就建立完成了。

5、Django模板

修改views檔案:

from django.shortcuts import render


def hello(request):
    # return HttpResponse("Hello world ! ")
    context = {'hello': 'Hello World!'}
    return render(request, 'hello.html', context)  # 將繫結的資料傳入前臺

為了讓django知道html檔案在哪裡,需要修改settings檔案的相應內容。預設情況下,正好適用,無需修改。

被繼承的模板base.html:

{#base.html#}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>模板測試</title>
</head>
<body>
    <h1>{{ hello }}</h1>
    <p>Django模板測試</p>
    {% block mainbody %}
       <p>original</p>
    {% endblock %}
</body>
</html>

hello.html 中繼承 base.html,並替換特定 block,hello.html 修改後的程式碼如下:

{#hello.html#}
{% extends "base.html" %}
 
{% block mainbody %}
   <p>繼承了 base.html 檔案</p>
{% endblock %}

重新整理網頁,輸出結果如下:

6、引入靜態檔案

需要將一些靜態資源引入專案,新建一個static目錄,可以將js、css、圖片等檔案放入這個目錄中:

 

 

需要讓Django找到這個目錄,需要在setting檔案中進行設定:

STATICFILES_DIRS=

在html檔案中引入靜態資源:

{% load static %}
{#base.html#}
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <link rel="stylesheet" href="{% static 'css/mypage.css' %}" rel="external nofollow" >
    <script src="{% static 'js/jquery-1.11.1.js' %}"></script>
<title>模板測試</title>
</head>
    <body>
        <h1>{{ hello }}</h1>
        <p>Django模板測試</p>
        {% block mainbody %}
           <p>original</p>
        {% endblock %}
    </body>
</html>

第一行引入靜態檔案路徑{% load staticfiles %},在<head>...</head>里加入CSS網鏈和js檔案

到此這篇關於使用Django框架建立專案的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com