jango是一個開放源代碼的Web應用框架,由Python寫成。
python 中的web框架有許多例如:Django、Tornado、Flask..而Django相較與其他WEB框架其優(yōu)勢為:大而全,框架本身集成了ORM、模型綁定、模板引擎、緩存、Session等諸多功能。
Django采用了MVC的軟件設計模式,即模型M,視圖V和控制器C。
安裝之前先確保你已經安裝了python(這個就不用說了吧=.=!),并順便瞅一眼版本對應關系,可以略過~
0x01 Linux下安裝:
第一種方式是pip安裝:
pip install Django
這是最簡潔的安裝方式,但是我在python2.7下安裝后引入其他模塊會遇到很多坑,所有建議升級到python3.6以后。再安裝之。
當然另一種方式就是源碼安裝:
輸入以下命令并安裝:
tar -zxvf Django-X.Y.tar.gz # 解壓下載包
cd Django-X.Y # 進入 Django 目錄
python setup.py install # 執(zhí)行安裝命令
注:安裝成功后 Django 位于 Python 安裝目錄的 site-packages 目錄下。
第一種方法是安裝包:
就像安裝python安裝包一樣,下載Django
(這時你需要瞄一眼上面那個版本對應表,By the way:目前 Django 1.6.x 以上版本已經完全兼容 Python 3.x。)
下載完 Django 壓縮包,解壓并和Python安裝目錄放在同一個根目錄,進入 Django 目錄,執(zhí)行python setup.py install,然后開始安裝,Django將要被安裝到Python的Lib下site-packages。
然后是配置環(huán)境變量,將這幾個目錄添加到系統(tǒng)環(huán)境變量中: C:\Python33\Lib\site-packages\django;C:\Python33\Scripts。 添加完成后就可以使用Django的django-admin.py命令新建工程了。
第二種方法就是pip命令行安裝(推薦)
pip install django==1.11.11
第三種方法就是Pycharm安裝:
然后搜索安裝django即可。
django-admin startproject mysite
這個要注意切換到在你想要創(chuàng)建的目錄下執(zhí)行,因為會就地創(chuàng)建!
創(chuàng)建以后的目錄大致是這樣:
mysite/ #項目的容器
├── manage.py # 管理文件,可讓你以各種方式與該 Django 項目進行交互
└── mysite # 項目目錄
├── __init__.py #一個空文件,告訴 Python 該目錄是一個 Python 包
├── settings.py # 配置文件
├── asgi.py # asgi服務器來處理websocket請求
├── urls.py # 路由系統(tǒng) --> URL和函數的對應關系
└── wsgi.py # runserver命令就使用wsgiref模塊做簡單的web server
#以下我這創(chuàng)建的項目例子是Secfile而非mysite
解釋:
python manage.py runserver 0.0.0.0:8000
0.0.0.0 讓其它電腦可連接到開發(fā)服務器,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/時,就會執(zhí)行 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),
]
這個例子是嘗試創(chuàng)建了一個login的函數,函數應用了HttpReponse,就是用戶訪問login/時,return用戶一字符串。執(zhí)行如下:
充分說明了 路由關系 和 處理請求的函數
這個時候,我們假裝要做一個用戶登錄界面,你給用戶顯示一句話也不太禮貌對吧,這時這樣實現:
那我們可不可以這樣:
把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"文件就可以任意發(fā)揮,做一個登陸的界面。例如:
<!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靜態(tài)文件保存哪里?
靜態(tài)文件配置:即是你寫HTML文件是導入的js 、jQuery、bootstrap\圖片等靜態(tài)文件路徑
STATIC_URL = '/static/' # HTML中使用的靜態(tài)文件夾前綴
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 靜態(tài)文件存放位置
]
注意: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',
]
總結一下,創(chuàng)建django的3個步驟:
1.創(chuàng)建project
2.配置
--模板路徑
'DIRS': [os.path.join(BASE_DIR, 'templates')]
--靜態(tài)文件路徑
3. 先禁掉csrf
最后,小編想說:我是一名python開發(fā)工程師,整理了一套最新的python系統(tǒng)學習教程,想要這些資料的可以關注私信小編“01”即可,希望能對你有所幫助。
一些知識:
本人結果:
高亮提醒:用Anaconda3安裝tensflow-gpu十分省事??!
安裝步驟
5.pycharm里選擇Anaconda所在的文件夾的encvs文件夾里面的DeepLearning文件夾里面的python.exe做解析器,測試能否在pycharm里使用
曾遇問題1:在pycharm里面出錯
我曾遇到一個問題:在Anaconda prompt里測試tensorflow-gpu安裝成功,但是pycharm里面顯示ImportError: DLL load failed: 找不到指定的模塊。
上圖為pycharm報錯信息
上圖為Anaconda prompt里的成功信息
在查閱相關資料后發(fā)現有效解決辦法:
曾遇問題2:新下載的pycharm2019.1.1無法正常鍵盤鍵入
問題原因:是因為安裝的時候裝了vim擴展所以會默認使用vim編輯器來進行編輯
解決辦法: