Django是一個開放源代碼的Web應用框架,由Python寫成。css
python 中的web框架有許多例如:Django、Tornado、Flask..而Django相較與其餘WEB框架其優點爲:大而全,框架自己集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。html
Django採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。python
安裝以前先確保你已經安裝了python(這個就不用說了吧=.=!),並順便瞅一眼版本對應關係,能夠略過~jquery
第一種方式是pip安裝:linux
pip install Django
這是最簡潔的安裝方式,可是我在python2.7下安裝後引入其餘模塊會遇到不少坑,全部建議升級到python3.6之後。再安裝之。web
固然另外一種方式就是源碼安裝:django
下載源碼包:https://www.djangoproject.com/download/bootstrap
輸入如下命令並安裝:設計模式
tar -zxvf Django-X.Y.tar.gz # 解壓下載包 cd Django-X.Y # 進入 Django 目錄 python setup.py install # 執行安裝命令
注:安裝成功後 Django 位於 Python 安裝目錄的 site-packages 目錄下。瀏覽器
第一種方法是安裝包:
就像安裝python安裝包同樣,下載Django 下載地址:https://www.djangoproject.com/download/
(這時你須要瞄一眼上面那個版本對應表,By the way:目前 Django 1.6.x 以上版本已經徹底兼容 Python 3.x。)
下載完 Django 壓縮包,解壓並和Python安裝目錄放在同一個根目錄,進入 Django 目錄,執行python setup.py install,而後開始安裝,Django將要被安裝到Python的Lib下site-packages。
而後是配置環境變量,將這幾個目錄添加到系統環境變量中: C:\Python33\Lib\site-packages\django;C:\Python33\Scripts。 添加完成後就可使用Django的django-admin.py命令新建工程了。
第二種方法就是pip命令行安裝(推薦)
pip install django==1.11.11
第三種方法就是Pycharm安裝:
而後搜索安裝django便可。
參考這個連接 https://www.runoob.com/django/django-install.html
django-admin startproject mysite
這個要注意切換到在你想要建立的目錄下執行,由於會就地建立!
建立之後的目錄大體是這樣:
mysite/ #項目的容器 ├── manage.py # 管理文件,可以讓你以各類方式與該 Django 項目進行交互 └── mysite # 項目目錄 ├── __init__.py #一個空文件,告訴 Python 該目錄是一個 Python 包 ├── settings.py # 配置文件 ├── asgi.py # asgi服務器來處理websocket請求 ├── urls.py # 路由系統 --> URL和函數的對應關係 └── wsgi.py # runserver命令就使用wsgiref模塊作簡單的web server
#如下我這建立的項目例子是Secfile而非mysite
解釋:
python manage.py runserver 0.0.0.0:8000
0.0.0.0 讓其它電腦可鏈接到開發服務器,8000 爲端口號。若是不說明,那麼端口號默認爲 8000。
在瀏覽器輸入你服務器的 ip(這裏咱們輸入本機 IP 地址: 127.0.0.1:8000) 及端口號,若是正常啓動,輸出結果以下
pycharm下運行直接點擊按鈕run 項目就行!
首先咱們看一下默認的 url.py文件,
from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
#這裏既是URL與函數的對應關係,當訪問http://127.0.0.1:8000/admin/時,就會執行 admin.site.urls這個寫好的函數。
而函數的做用既是處理用戶請求而且返回結果,其至少要有一個參數
例:
from django.contrib import admin from django.urls import path from django.shortcuts import HttpResponse def login(request): ''' 處理用戶請求並返回內容 :param request:用戶請求相關的全部信息(對象) :return: ''' return HttpResponse('hello word!') urlpatterns = [ #path('admin/', admin.site.urls), path('login/',login), ]
這個例子是嘗試建立了一個login的函數,函數應用了HttpReponse,就是用戶訪問login/時,return用戶一字符串。執行以下:
充分說明了 路由關係 和 處理請求的函數
這個時候,咱們僞裝要作一個用戶登陸界面,你給用戶顯示一句話也不太禮貌對吧,這時這樣實現:
那咱們可不能夠這樣:
把html標籤信息返給用戶呢:
1 def login(request): 2 ''' 3 處理用戶請求並返回內容 4 :param request:用戶請求相關的全部信息(對象) 5 :return: 6 ''' 7 return HttpResponse('<input type="text" />')
神奇啊!
藉助這個思路,咱們就能夠在templates文件夾下放一個login.html啊,可可這個文件怎麼告訴django怎麼讀取呢?由於HttpReponse只認識字符串啊!
那砸辦?--> 用 render模塊!
from django.shortcuts import HttpResponse,render def login(request): #return HttpResponse('<input type="text" />') return render(request,'login.html') urlpatterns = [ #path('admin/', admin.site.urls), path('login/',login), ]
這個render就是自動找到模板路徑下的login.html讀取內容並返回給用戶(本質用的仍是HttpResponse)
而那個"login.html"文件就能夠任意發揮,作一個登錄的界面。例如:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>登陸 </title> </head> <body style="background-color:PowderBlue;"> <form> 用戶名:<br> <input type="text" name="usr" required autofocus placeholder="username"><br> 密碼:<br> <input type="password" name="passwd" maxlength="12" placeholder="password"><br><br> <input type="submit" value="登陸"/> </form> </body> </html>
對應關係是在setting.py中設置好的,已經把templates做爲basez_dir了,因此這個文件夾的名字路徑要一致才行 。
配置模板路徑:
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
這裏相對實際就多了一個模板路徑配置
那麼想設置CSS靜態文件保存哪裏?
靜態文件配置:便是你寫HTML文件是導入的js 、jQuery、bootstrap\圖片等靜態文件路徑
STATIC_URL = '/static/' # HTML中使用的靜態文件夾前綴 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), # 靜態文件存放位置 ]
注意:1.在setting.py最後面添加位置,/static/名字對應便可非強制該名;2.逗號,必定不要忘記!
同時你html裏的路徑也要作響應的修改
<script src="/static/jquery-3.2.1.min.js"></script> <script src="/static/bootstrap/js/bootstrap.min.js"></script> <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.min.css">
剛開始測試使用的時候可在配置文件中暫時禁用csrf中間件,方便表單提交測試。
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', ### <---- 將這一行註釋 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
總結一下,建立django的3個步驟:
1.建立project
2.配置 --模板路徑 'DIRS': [os.path.join(BASE_DIR, 'templates')] --靜態文件路徑 3. 先禁掉csrf