django language_第 58 天:Python Web开发 Django 简介
?今天來為大家介紹 Python 另一個 Web 開發框架 Django,它是一個基于 Python 定制的開源 Web 應用框架,最早源于一個在線新聞 Web 網站,后于2005年開源。Django 的功能大而全,它提供的一站式解決的思路,能讓開發者不用在開發之前就在選擇應用的基礎設施上花費大量時間。它有很多功能強大的第三方插件,可以使我們更快速、方便的開發一個網站。
Django 框架
Django 采用了 MVC (即模型M,視圖V和控制器C)構造的 Web 框架,但由于控制器接受用戶輸入的部分由框架自行處理,所以使用 Django 開發中里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV 模式。Django 的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼復用,多個組件可以很方便的以“插件”形式服務于整個框架,Django 有許多功能強大的第三方“插件”,你甚至可以很方便的開發出自己的工具包,這使得 Django 具有很強的可擴展性。它還強調快速開發和 DRY(Do Not Repeat Yourself) 原則。安裝 Django 庫
同其他模塊一樣,Django 的安裝也非常簡單,下面通過 pip3 包管理器來安裝
pip3 install django安裝 Django 之后就可以使用管理工具?django-admin,可以用來創建項目,創建應用,啟動服務等操作命令。
$ django-admincleanup -- remove old data from the databasecompilemessages -- compile .po files to .mo for use with gettextcreatecachetable -- creates table for SQL cache backendcreatesuperuser -- create a superuserdbshell -- run command-line client for the current databasediffsettings -- display differences between the current settings and Django defaultsdumpdata -- output contents of database as a fixtureflush -- execute 'sqlflush' on the current databaseinspectdb -- output Django model module for tables in databaseloaddata -- install the named fixture(s) in the databasemakemessages -- pull out all strings marked for translationreset -- executes 'sqlreset' for the given app(s)runfcgi -- run this project as a fastcgirunserver -- start a lightweight web server for developmentshell -- run a Python interactive interpreter. Tries to use IPython, if it's availablesql -- print the CREATE TABLE statements for the given app(s)sqlall -- print the CREATE TABLE, CREATE INDEX and custom statements for the given app(s)sqlclear -- print the DROP TABLE statements for the given app(s)sqlcustom -- print the custom table-modifying SQL statements for the given app(s)sqlflush -- print the SQL statements required to return all tables to installation statesqlindexes -- print the CREATE INDEX statements for the given app(s)sqlreset -- print the DROP TABLE and CREATE TABLE statements for the given app(s)sqlsequencereset -- print the SQL statements for resetting sequences for the given app(s)startapp -- create Django app directory in this project's directorysyncdb -- create database tables for apps in INSTALLED_APPS where requiredtest -- run the test suite for the specified app, or the entire sitetestserver -- run a development server with data from the given fixture(s)validate -- validate all installed modules創建一個項目
項目是 Django 實例的一系列設置的集合,它包括數據庫配置、Django 特定選項以及應用程序的特定設置。安裝成功后,接下來我們開始創建一個新項目?TestProject
$ django-admin startproject TestProject$ cd TestProject$. |____manage.py |____TestProject | |______init__.py | |____settings.py | |____urls.py | |____wsgi.py目錄說明:TestProject: 項目的容器。manage.py: 一個實用的命令行工具,可讓你以各種方式與該 Django 項目進行交互。TestProject/init.py: 一個空文件,告訴 Python 該目錄是一個 Python 包。TestProject/settings.py: 該 Django 項目的設置/配置。TestProject/urls.py: 該 Django 項目的 URL 聲明; 一份由 Django 驅動的網站"目錄"。TestProject/wsgi.py: 一個 WSGI 兼容的 Web 服務器的入口,以便運行你的項目。
啟動開發服務器
創建完項目后,其實就已經構成了一個可運行的 Django 網站。Django 自帶了一個簡單的網絡服務器,在開發過程中非常方便,所以我們無需安裝任何其他軟件即可在本地運行項目。在?TestProject?項目目錄下輸入如下命令啟動服務器:
$ python manage.py runserver 127.0.0.1:8080Watching for file changes with StatReloaderPerforming system checks...System check identified no issues (0 silenced).You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.Run 'python manage.py migrate' to apply them.September 27, 2019 - 10:54:32Django version 2.2.5, using settings 'testweb.settings'Starting development server at http://127.0.0.1:8080/Quit the server with CONTROL-C.如上所示服務啟動完成。django 開發服務是可用在開發期間的,一個內建的,輕量的web服務。它提供了一個在網站開發階段實時監測你的代碼修改并加載到它們,你能直接看到修改結果而不需要重啟服務。
127.0.0.1:表示可連接到服務器的IP地址 8080:端口號(如果不指定,端口號默認為 8000)
然后在瀏覽器輸入服務器的IP及端口號(這里我們輸入本機 IP 地址:127.0.0.1:8080) ,如果正常啟動,輸出結果如下:
正常啟動注意:開發服務器在需要的情況下會對每一次的訪問請求重新載入一遍 Python 代碼。所以你不需要為了讓修改的代碼生效而頻繁的重新啟動服務器。然而,一些動作,比如添加新文件,將不會觸發自動重新加載,這時你得自己手動重啟服務器。
配置開發服務器
Django 是一個支持國際化和本地化的框架,因此剛才我們看到的默認首頁也是支持國際化的,我們將默認語言修改為中文,時區設置為東八區,配置如下:
$ vi TestProject/settings.py# 省略上下文# 設置語言代碼LANGUAGE_CODE = 'zh-hans'# 設置時區TIME_ZONE = 'Asia/Chongqing'然后刷新剛才的頁面,頁面會變為中文顯示,如下圖所示:
創建一個應用
創建完項目,就可以在項目創建應用了,每一個應用都是一個 Python 包,并且遵循著相同的約定。Django 自帶一個工具,可以幫你生成應用的基礎目錄結構,這樣你就能專心寫代碼,而不是創建目錄了。
項目 VS 應用?項目和應用有啥區別?應用是一個專門做某件事的網絡應用程序——比如博客系統,或者公共記錄的數據庫,或者簡單的投票程序。項目則是一個網站使用的配置和應用的集合。項目可以包含很多個應用,應用可以被很多個項目使用。
你的應用可以存放在任何?Python?path?中定義的路徑。在這個教程中,我們將在你的?manage.py?同級目錄下創建投票應用。這樣它就可以作為頂級模塊導入,而不是?mysite?的子模塊。請確定你現在處于?manage.py?所在的目錄下,然后運行這行命令來創建一個應用:
$ python manage.py startapp polls$ tree #列出當前目錄結構.|____db.sqlite3|____manage.py|____polls| |______init__.py| |____admin.py| |____apps.py| |____migrations| | |______init__.py| |____models.py| |____tests.py| |____views.py|____TestProject| |______init__.py| |______pycache__| | |______init__.cpython-37.pyc| | |____settings.cpython-37.pyc| | |____urls.cpython-37.pyc| | |____wsgi.cpython-37.pyc| |____settings.py| |____urls.py| |____wsgi.py然后我們就可以編輯polls應用中的views.py視圖,操作如下:
$ vim polls/views.pyfrom django.http import HttpResponsedef index(request): return HttpResponse("你好,這是一個投票頁面。")保存后退出,這樣一個簡單的視圖就做好了,接下來需要給它加一個指向這個視圖的路由。首先我們需要在polls應用下新建?urls.py?的文件,操作如下:
$ vim polls/urls.pyfrom django.urls import pathfrom . import viewsurlpatterns = [ path('', views.index, name='index'),]保存后退出,然后還需要修改TestProject?目錄下的?urls.py,增加?polls?的路由映射配置,如下:
$ vim TestProject/urls.pyfrom django.contrib import adminfrom django.urls import path, includeurlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls),]函數?include()?允許引用其它?URLconfs。每當 Django 遇到?include()?時,它會截斷與此項匹配的 URL 的部分,并將剩余的字符串發送到?URLconf?以供進一步處理。Django設計?include()?的理念是使其可以即插即用,當包括其它 URL 模式時你應該總是使用?include(),?admin.site.urls?是唯一例外。
保存后退出,然后我們再訪問網址 http://localhost:8080/polls/, 就能訪問到我們新創建的頁面了,如下圖:
總結
本文通過上面幾步操作,就可以快速創建一個可訪問的網站,是不是覺得用 Django 開發網站原來這么簡單方便。Django還有模板,表單,路由,認證,基本的數據庫管理等等內建功能,接下來將進一步的介紹 Django 的高級功能。
參考
- Django 中文文檔:https://docs.djangoproject.com/zh-hans/2.2/
- Django W3C介紹:https://www.w3cschool.cn/django/
示例代碼:python-100-day-058
系列文章
????第 57 天:Python 用戶登錄 Flask-Login
????第 56 天:Python 爬蟲之 urllib 包基本使用
????第55天:爬蟲介紹
????第54天:Python 多線程 Event
????第53天:Python 線程池
????第52天:Python multiprocessing 模塊
????第51天:Python Queue 入門
????第0-50天:從0學習Python 0-50合集PS:公號內回復 :Python,即可進入Python 新手學習交流群,一起100天計劃!-END-Python 技術關于 Python 都在這里總結
以上是生活随笔為你收集整理的django language_第 58 天:Python Web开发 Django 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 江苏python工资一般多少_会计行业一
- 下一篇: python for循环连续输入五个成绩