py -3 -m pip install djangopython
>>> import djangoweb
>>> django.get_version()正則表達式
'2.2.6'數據庫
查看版本也能夠這樣:apache
C:\Users\Lenovo>py -m django --versiondjango
2.2.6服務器
投票應用程序由兩部分組成:網絡
一個讓人們查看和投票的公共站點app
一個讓你能添加、修改和刪除投票的管理站點函數
運行如下命令,會在當前目錄下建立一個mysite目錄。
D:\django>django-admin startproject mysite
咱們來看下startproject建立了什麼
mysite/根目錄是你項目的容器,能夠重命名爲其餘名字。
manage.py:一個讓你用各類方式管理django項目的命令行工具。
裏面一層的mysite/目錄包含你的項目,他是一個純python包。它的名字就是當你引用它內部任務東西時須要用到的python包名。(如mysite.urls)
mysite/__init__.py:一個空文件,告訴python這個目錄應該被認爲是一個python包。
mysite/settings.py:django項目的配置文件。
mysite/urls.py:django項目的URL聲明,就像你網站的「目錄」。
mysite/wsgi.py:做爲你的項目的運行在wsgi兼容的web服務器上的入口
運行py -3 -m manage.py runserver啓動django自帶的簡易服務器
剛剛啓動的是django自帶的用於開發的建議服務器,它是一個用純python寫的輕量級的web服務器。咱們將這個服務器內置在django中是爲了讓你能快速的開發出想要的東西,由於你不須要進行配置生產級別的服務器(如apache)方面的工做,除非你已經準備好投入生產環境了。
訪問https://127.0.0.1:8000/,你將會看到django的頁面。
默認狀況下,runserver命令會將服務器設置爲監聽本機內部IP的8000端口。
若是想更換服務器的監聽端口,能夠運行下面的命令修改端口
py -3 manage.py runserver 8080
若是想修改服務器監聽的ip,能夠在端口以前輸入新的。如,爲了監聽全部服務器的公開ip,使用:
py -3 manage.py runserver 0:8000
0是0.0.0.0的簡寫
在django中,每個應用都是一個python包,而且遵循着相同的約定。django自帶一個工具,能夠幫你生成應用的基礎目錄結構,這樣你就能專心寫代碼,而不是建立目錄了。
項目和應用有啥區別?應用時一個專門作某件事的網絡應用程序—好比博客系統,或者公共記錄的數據庫,或者簡單的投票程序。項目則是一個網站使用的配置和應用的集合。項目能夠包含不少個應用。應用能夠被不少個項目使用。
你的應用能夠存放在任何python path中定義的路徑。在本教程中,咱們將在manage.py統計目錄下建立投票應用。這樣它就能夠做爲頂級模塊導入,而不是mysite的子模塊。
運行命令:py -3 manage.py startapp polls
這會在manage.py同級目錄下建立一個polls目錄,結構以下圖:
這個目錄結構包括了投票應用的所有內容
在polls/view.py中輸入如下代碼,編寫第一個視圖:
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. U r at the polls index.")
這時django中最簡單的視圖。若是想看見效果,咱們須要將一個URL映射到它—這就是咱們須要URLconf的緣由了。
爲了建立URLconf,請在polls目錄裏建立一個urls.py文件。你的應用目錄如今看起來應該是這樣:
在polls/urls.py中,輸入以下代碼:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
下一步是要在根URLconf文件中指定咱們建立的polls.urls模塊。
在mysite/urls.py文件的urlpatterns列表裏插入一個include(),以下:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
函數include()容許引用其餘URLconfs。每當遇到:func: ~django.urls.include時,它會截斷與
此匹配的URL的部分,並將剩餘的字符串發送到URLconf以供進一步處理。
咱們設計include()的理念是使其能夠即插即用。由於投票應用有它本身的URLconf(pools/urls.py),他們可以被放在」/polls/」,」/fun_polls/」,」/content/polls/」,或者其餘任何路徑下,這個應用都可以正常工做。
當包括其餘URL模式時你應該老是使用include(),admin.site.urls是惟一例外。
如今已經把index視圖添加進了URLconf。能夠驗證是否正常工做,運行下面的命令:
py -3 manage.py runserver
頁面上能夠看到咱們定義的文字:
"Hello, world. U r at the polls index."
函數path()具備四個參數,兩個必須參數:route和view,兩個可選參數:kwargs和name。
mysite/urls.py:
urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ] polls/urls.py: urlpatterns = [ path('', views.index, name='index'), ]
route是一個匹配URL的準則(相似正則表達式)。當django響應一個請求時,它會從urlpatterns的第一項開始,按順序依次匹配列表中的項,直到找到匹配的項。
這些準則不會匹配GET和POST請求的參數或域名。例如URLconf在處理請求https://www.example.com/myapp/時,它會嘗試匹配myapp/。
處理請求https://www.example.com/myapp/?page=3時,也只會嘗試匹配myapp/。
當django找到了一個匹配的準則,就會調用這個特定的視圖函數,並傳入一個HttpRequest對象做爲第一個參數,被「捕獲」的參數以關鍵字參數的形式傳入。
def index(request): return HttpResponse("Hello, world. U r at the polls index.")
任意個關鍵字參數能夠做爲一個字典傳遞給目標視圖函數。
爲你的URL取名能使你在django的任意地方惟一地引用它,尤爲是在模板中。這個有用的特性容許你只改一個文件就能全局地修改某個URL模式(沒太理解)。
polls/urls.py:
urlpatterns = [ path('', views.index, name='index'), ]