django (一) 環境的配置及Django文件簡介
1.1, virtualenv的概述
virtualenv是用來創建Python的虛擬環境的庫,虛擬環境能夠獨立於真實環境存在,並且可以同時有多個互相獨立的Python虛擬環境,每個虛擬環境都可以營造一個幹凈的開發環境,對於項目的依賴、版本的控制有著非常重要的作用。
虛擬環境有什麽意義?
比如: 我們要同時開發多個應用程序,應用A需要Django1.11,而應用B需要Django1.8怎麽辦, 這種情況下,每個應用可能需要各自擁有一套獨立的Python運行環境,virtualenv就可以用來為每一個應用創建一套‘隔離‘的Python運行環境。
?
1.2, 安裝pip
【請使用普通用戶】
a. 查看pip版本
查看pip版本: pip -V
查看pip3版本: pip3 -V
b. 安裝pip(如果存在則不需要安裝)
安裝pip3: apt install python3-pip
安裝pip2: apt install python-pip
c. 更新pip
更新pip (如果pip版本高於9.0則不需要更新):
更新pip3: pip3 install --upgrade pip
更新pip: pip install --upgrade pip
註意: 更新後如出現以下錯誤(這是pip 10.0.0版本的BUG):
Traceback (most recent call last):
File “/usr/bin/pip”, line 9, in
from pip import main
?
解決方法:修改對應pip文件中的代碼(pip和pip3類似)
例如更新pip時報錯則需要修改 /usr/bin/pip 文件中的代碼,
使用: sudo vim /usr/bin/pip 打開pip文件
將:
from pip import main
if __name__ == ‘__main__‘:
sys.exit(main())
改成:
from pip import __main__
if __name__ == ‘__main__‘:
sys.exit(__main__._main())
?
d. 讓pip默認使用python3, 執行命令:
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
e. pip命令
pip install xxx:安裝xxx依賴包
pip list:查看所有依賴包
pip freeze:查看新安裝的包
pip uninstall xxx :卸載xxx包
?
1.3, virtualenv和virtualenvwrapper 的安裝和使用
【請使用普通用戶】
a. 安裝虛擬環境
sudo apt update
sudo pip3 install virtualenv virtualenvwrapper
安裝後如果不能使用虛擬環境命令,則需要配置環境變量
1, 進入家目錄: cd ~
2, 使用vim打開.bashrc, 定位到最後:shift+g,並添加以下2行代碼(註意修改自己Ubuntu的用戶名)
export WORKON_HOME=/home/自己Ubuntu的用戶名/.virtualenvs
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh
3, 在家目錄創建.virtualenvs目錄: mkdir .virtualenvs
4, 加載修改後的設置,使之生效:source .bashrc
(如果找不到virtualenvwrapper.sh,
則將路徑改成/usr/local/bin/virtualenvwrapper.sh
然後重試 )
b. 創建虛擬環境:
mkvirtualenv env
mkvirtualenv env2 -p /usr/bin/python3 (指定python路徑)
c. 退出虛擬環境
deactivate
d. 進入虛擬環境:
workon 虛擬環境名稱
-
安裝django
pip install django==1.11(==1.11是指定版本, 如不寫則會安裝最新版本)
測試Django是否安裝成功
進入python環境
import django
django.get_version()
-
創建一個Django項目
進入到指定要存放項目的目錄,執行 django-admin startproject xxx 來創建一個名字為xxx的工程
查看默認目錄結構:
manage.py:
是Django用於管理本項目的命令行工具,之後進行站點運行,數據庫自動生成等都是通過本文件完成。
HelloDjango/__init__.py:
告訴python該目錄是一個python包,暫無內容,後期一些工具的初始化可能會用到
HelloDjango/settings.py:
Django項目的配置文件,默認狀態其中定義了本項目引用的組件,項目名,數據庫,靜態資源等。
HelloDjango/urls.py:
維護項目的URL路由映射,即定義當客戶端訪問時由哪個模塊進行響應。
HelloDjango/wsgi.py:
定義WSGI的接口信息,主要用於服務器集成,通常本文件生成後無需改動。
-
測試服務器的啟動
python manage.py runserver [ip:port]
可以直接進行服務運行 默認執行起來的端口是8000
也可以自己指定ip和端口:
監聽機器所有可用 ip (電腦可能有多個內網ip或多個外網ip):python manage.py runserver 0.0.0.0:8000
如果是外網或者局域網電腦上可以用其它電腦查看開發服務器,訪問對應的 ip加端口,比如 10.36.132.2:8000
瀏覽器訪問:http://localhost:8000 可以看到服務器啟動成功
?
-
數據遷移遷移的概念:就是將模型映射到數據庫的過程
生成遷移:python manage.py makemigrations
執行遷移:python manage.py migrate
?
-
創建應用python manage.py startapp XXX創建名稱為XXX的應用使用應用前需要將應用配置到項目中,在settings.py中將應用加入到INSTALLED_APPS選項中
應用目錄介紹:
__init__.py:
其中暫無內容,使得app成為一個包
admin.py:
管理站點模型的聲明文件,默認為空
apps.py:
應用信息定義文件,在其中生成了AppConfig,該類用於定義應用名等數據
models.py:
添加模型層數據類文件
views.py:
定義URL相應函數(路由規則)
migrations包:
自動生成,生成遷移文件的
tests.py:
測試代碼文件
?
-
基本視圖
首先我們在views.py中建立一個路由響應函數
from django.http import HttpResponse
def welcome(request):
return HttpResponse(‘HelloDjango‘);
?
接著我們在urls中進行註冊
from App import views
url(r‘^welcome/‘,views.welcome)
?
基於模塊化的設計,我們通常會在每個app中定義自己的urls
?
在項目的urls中將app的urls包含進來
from django.conf.urls import include
url(r‘^welcome/‘,include(‘App.urls‘))
?
課堂練習:新建一個應用showtime,每次刷新頁面顯示不同的時間。
?
-
基本模板
模板實際上就是我們用HTML寫好的頁面
創建模板文件夾templates, 在模板文件夾中創建模板文件
在views中去加載渲染模板, 使用render函數: return render(request,‘xxx‘)
-
定義模型在models.py 中引入modelsfrom django.db import models
創建自己的模型類,但切記要繼承自 models.Model
案例驅動: 使用模型定義班級,並在模板上顯示班級列表
班級: table : grade
columns:
班級名稱 - name
成立時間 - date
女生個數 - girlnum
男生個數 - boynum
是否刪除 - is_delete
-
Admin 後臺管理
在admin.py中將model加入後臺管理:
admin.site.register(Grade)
創建超級用戶:python manage.py createsuperuser
訪問admin後臺:http://127.0.0.1:8000/admin/
-
展示班級列表
在views.py文件中編寫班級的視圖函數:
def grade_list(request):
# 獲取班級所有數據
g_list = Grade.objects.all()
return render(request, ‘grade/grade_list.html‘, {‘g_list‘: g_list})
? 模板文件(html文件):
{% for grade in g_list %}
{{ grade.sname }}
{% endfor %}
-
配置url
在grade App中新建urls.py文件,輸入如下代碼:
from django.conf.urls import url
from .views import grade_list
urlpatterns = [
url(r‘^grade/$‘, grade_list),
]
? 在工程的urls.py文件中添加如下代碼:
url(r‘^‘, include(‘grade.urls‘)),
columns:
? 學生姓名 - name
學生性別 - gender
學生年齡 - age
學生簡介 - info
是否刪除 - is_delete
定義學生類 class Student(models.Model): name = models.CharField(max_length=20) gender = models.BooleanField(default=True) age = models.IntegerField() info = models.CharField(max_length=20) is_delete = models.BooleanField(default=False)
? 3,學會查看官網: https://docs.djangoproject.com/en/1.11/intro/tutorial01/
django (一) 環境的配置及Django文件簡介