使用Django框架創(chuàng)建項(xiàng)目
本章我們將介紹Django 管理工具及如何使用 Django 來(lái)創(chuàng)建項(xiàng)目,第一個(gè)項(xiàng)目我們以 HelloWorld 來(lái)命令項(xiàng)目。
一、Django 管理工具
安裝 Django 之后,您現(xiàn)在應(yīng)該已經(jīng)有了可用的管理工具 django-admin.py。我們可以使用 django-admin.py 來(lái)創(chuàng)建一個(gè)項(xiàng)目:
我們可以來(lái)看下django-admin 的命令介紹:
$ django-admin.py
二、創(chuàng)建第一個(gè)項(xiàng)目
使用 django-admin.py 來(lái)創(chuàng)建 HelloWorld 項(xiàng)目:
django-admin.py startproject HelloWorld
創(chuàng)建完成后我們可以查看下項(xiàng)目的目錄結(jié)構(gòu):
$ cd HelloWorld/ $ tree . |-- HelloWorld | |-- __init__.py | |-- asgi.py | |-- settings.py | |-- urls.py | `-- wsgi.py `-- manage.py
目錄說(shuō)明:
- HelloWorld: 項(xiàng)目的容器。
- manage.py: 一個(gè)實(shí)用的命令行工具,Django管理主文件。
- HelloWorld/__init__.py: 一個(gè)空文件,告訴 Python 該目錄是一個(gè) Python 包。
- HelloWorld/asgi.py: 一個(gè) ASGI 兼容的 Web 服務(wù)器的入口,以便運(yùn)行你的項(xiàng)目。
- HelloWorld/settings.py: 項(xiàng)目的設(shè)置/配置文件。
- HelloWorld/urls.py: 項(xiàng)目的URL路由文件; 一份由 Django 驅(qū)動(dòng)的網(wǎng)站"目錄"。
- HelloWorld/wsgi.py: 一個(gè) WSGI 兼容的 Web 服務(wù)器的入口,以便運(yùn)行你的項(xiàng)目。
接下來(lái)我們進(jìn)入 HelloWorld 目錄輸入以下命令,啟動(dòng)服務(wù)器:
manage.py runserver 0.0.0.0:8000
0.0.0.0 讓其它電腦可連接到開發(fā)服務(wù)器,8000 為端口號(hào)。如果不說(shuō)明,那么端口號(hào)默認(rèn)為 8000。
在瀏覽器輸入你服務(wù)器的 ip(這里我們輸入本機(jī) IP 地址: 127.0.0.1:8000) 及端口號(hào),如果正常啟動(dòng),輸出結(jié)果如下:
三、視圖和 URL 配置
在先前創(chuàng)建的 HelloWorld 目錄下的 HelloWorld 目錄新建一個(gè) views.py 文件,并輸入代碼:
from django.http import HttpResponse #需要導(dǎo)入HttpResponse模塊 def hello(request): # 定義Hello函數(shù)。request參數(shù)必須有,名字類似self的默認(rèn)規(guī)則,可以修改,它封裝了用戶請(qǐng)求的所有內(nèi)容 return HttpResponse("Hello world ! ") #不能直接字符串,必須是由這個(gè)類封裝,此為Django規(guī)則
接著,綁定 URL 與視圖函數(shù)。打開 urls.py 文件,刪除原來(lái)代碼,將以下代碼復(fù)制粘貼到 urls.py 文件中:
from django.contrib import admin from django.urls import path from django.conf.urls import url from mytest import views # 首先需要導(dǎo)入對(duì)應(yīng)APP的views urlpatterns = [ path('admin/', admin.site.urls), # admin后臺(tái)路由 url(r'^$', views.hello), # 你定義的路由,第一個(gè)參數(shù)為引號(hào)中的正則表達(dá)式,第二個(gè)參數(shù)業(yè)務(wù)邏輯函數(shù)(當(dāng)前為views中的hello函數(shù)) ]
整個(gè)目錄結(jié)構(gòu)如下:
$ 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
完成后,啟動(dòng) Django 開發(fā)服務(wù)器,并在瀏覽器訪問(wèn)打開瀏覽器并訪問(wèn):
我們也可以修改以下規(guī)則:
from django.urls import path from . import views urlpatterns = [ path('hello/', views.hello), ]
通過(guò)瀏覽器打開 http://127.0.0.1:8000/hello,輸出結(jié)果如下:
注意:項(xiàng)目中如果代碼有改動(dòng),服務(wù)器會(huì)自動(dòng)監(jiān)測(cè)代碼的改動(dòng)并自動(dòng)重新載入,所以如果你已經(jīng)啟動(dòng)了服務(wù)器則不需手動(dòng)重啟。
四、path() 函數(shù)
Django path() 可以接收四個(gè)參數(shù),分別是兩個(gè)必選參數(shù):route、view 和兩個(gè)可選參數(shù):kwargs、name。
語(yǔ)法格式:
path(route, view, kwargs=None, name=None)
- route: 字符串,表示 URL 規(guī)則,與之匹配的 URL 會(huì)執(zhí)行對(duì)應(yīng)的第二個(gè)參數(shù) view。
- view: 用于執(zhí)行與正則表達(dá)式匹配的 URL 請(qǐng)求。
- kwargs: 視圖使用的字典類型的參數(shù)。
- name: 用來(lái)反向獲取 URL。
如果是 Django >= 2.0 的版本,path() 函數(shù)無(wú)法匹配正則表達(dá)式,需要使用 re_path() 即可匹配正則表達(dá)式:
from django.urls import re_path from . import view urlpatterns = [ re_path(r'^hello$',view.hello), ]
五、使用PyCharm創(chuàng)建Django項(xiàng)目
PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語(yǔ)言開發(fā)時(shí)提高其效率的工具,比如調(diào)試、語(yǔ)法高亮、Project管理、代碼跳轉(zhuǎn)、智能提示、自動(dòng)完成、單元測(cè)試、版本控制。此外,該IDE提供了一些高級(jí)功能,以用于支持Django框架下的專業(yè)Web開發(fā)。剛玩Python或Django的朋友,如果沒(méi)有自己熟悉的IDE,建議直接使用這個(gè)。PyCharm可跨平臺(tái),支持市面流行的操作系統(tǒng)。
下面,我教大家使用pycharm創(chuàng)建自己的第一個(gè)django項(xiàng)目。
1、打開PyCharm,新建項(xiàng)目
界面講解:
點(diǎn)擊創(chuàng)建之后,PyCharm自動(dòng)幫我們創(chuàng)建一個(gè)虛擬環(huán)境和安裝最新版的Django。
安裝成功之后,我們剛才指定的目錄下就多出一個(gè)untiltled4文件夾。打開untiltled4文件夾。
這就是Django的目錄結(jié)構(gòu),其中
templates文件夾是存放模板文件的,
untiltled4文件夾放的是Django的一些配置文件。
manage.py文件則是對(duì)django-admin.py的簡(jiǎn)單包裝的一個(gè)文件,通過(guò)它能運(yùn)行一些簡(jiǎn)單的命令。
venv文件夾就是virtualenv虛擬環(huán)境目錄,venv文件夾不是django源碼里的東西,只是我們創(chuàng)建虛擬環(huán)境時(shí)指定到這個(gè)目錄下了而已。
我們?cè)趧?chuàng)建Django項(xiàng)目的時(shí)候,也可以不用在More Settings里創(chuàng)建APP和指定templates文件夾。
我們可以手動(dòng)通方法創(chuàng)建。
2、通過(guò)命令行,添加新的APP。
點(diǎn)擊PyCharm下方的Terminal,看下圖:
注意命令行前面的 (venv)出現(xiàn)這個(gè),表示我們是在virtualenv虛擬環(huán)境下操作,如果沒(méi)有,或者虛擬環(huán)境名和我們創(chuàng)建的名稱不一致,說(shuō)明PyCharm配置錯(cuò)誤,我們輸入任何命令對(duì)剛才我們創(chuàng)建的項(xiàng)目來(lái)說(shuō)是無(wú)效的。
我們通過(guò)命令行,進(jìn)入我們的項(xiàng)目目錄,然后輸入
python manage.py startapp mytest
創(chuàng)建一個(gè)叫 mytest的APP。
或者從主菜單中,選擇“工具”運(yùn)行manage.py task,在Django控制臺(tái)對(duì)話框中,鍵入startapp startapp mytest
.
回車之后我們就能看到,我們的項(xiàng)目目錄里多出一個(gè)mytest文件夾。
關(guān)于更多的一些Django常用的命令,大家可以看看這篇文章:Django常用命令
3、遷移數(shù)據(jù)庫(kù)。
在Terminal下輸入下面的命令,生成和同步數(shù)據(jù)庫(kù)。
python manage.py makemigrations python manage.py migrate
4、啟動(dòng)Django項(xiàng)目
點(diǎn)擊“運(yùn)行”按鈕
項(xiàng)目啟動(dòng)成功,然后我們通過(guò)瀏覽器訪問(wèn)http://127.0.0.1:8080/
這樣,我們的第一個(gè)Django項(xiàng)目就創(chuàng)建完成了。
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) # 將綁定的數(shù)據(jù)傳入前臺(tái)
為了讓django知道html文件在哪里,需要修改settings文件的相應(yīng)內(nèi)容。默認(rèn)情況下,正好適用,無(wú)需修改。
被繼承的模板base.html:
{#base.html#} <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>模板測(cè)試</title> </head> <body> <h1>{{ hello }}</h1> <p>Django模板測(cè)試</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 %}
刷新網(wǎng)頁(yè),輸出結(jié)果如下:
6、引入靜態(tài)文件
需要將一些靜態(tài)資源引入項(xiàng)目,新建一個(gè)static目錄,可以將js、css、圖片等文件放入這個(gè)目錄中:
需要讓Django找到這個(gè)目錄,需要在setting文件中進(jìn)行配置:
STATICFILES_DIRS=
在html文件中引入靜態(tài)資源:
{% 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>模板測(cè)試</title> </head> <body> <h1>{{ hello }}</h1> <p>Django模板測(cè)試</p> {% block mainbody %} <p>original</p> {% endblock %} </body> </html>
第一行引入靜態(tài)文件路徑{% load staticfiles %},在<head>...</head>里加入CSS網(wǎng)鏈和js文件
到此這篇關(guān)于使用Django框架創(chuàng)建項(xiàng)目的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
在Mac OS上使用mod_wsgi連接Python與Apache服務(wù)器
這篇文章主要介紹了在Mac OS上使用mod_wsgi連接Python與Apache服務(wù)器的方法,同時(shí)文中還介紹了使用Python的Django框架時(shí)mod_wsgi連接方式下可能遇到的問(wèn)題的一般解決方法,需要的朋友可以參考下2015-12-12Python實(shí)現(xiàn)批量識(shí)別圖片文字并存為Excel
批量文字識(shí)別是Python辦公自動(dòng)化的基本操作,應(yīng)用在我們工作生活中的方方面面。本文主要以開源免費(fèi)的easyocr來(lái)實(shí)現(xiàn)批量識(shí)別圖片文字并存為Excel,感興趣的可以學(xué)習(xí)一下2022-06-06wxPython多個(gè)窗口的基本結(jié)構(gòu)
這篇文章主要為大家詳細(xì)介紹了wxPython多個(gè)窗口的基本結(jié)構(gòu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11