1. 程式人生 > >django (一) 環境的配置及Django文件簡介

django (一) 環境的配置及Django文件簡介

comm template 自動 response 不同 register views import prop

1, 創建虛擬環境(virtualenv 和virtualenvwrapper)
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文件中的代碼(pippip3類似)
                例如更新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, virtualenvvirtualenvwrapper 的安裝和使用
   【請使用普通用戶】 
    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 虛擬環境名稱
  1. 安裝django

    pip install django==1.11(==1.11是指定版本, 如不寫則會安裝最新版本)

  測試Django是否安裝成功 
  python環境
    import django
    django.get_version()
  1. 創建一個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的接口信息,主要用於服務器集成,通常本文件生成後無需改動。
  1. 測試服務器的啟動
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 可以看到服務器啟動成功

?

  1. 數據遷移遷移的概念:就是將模型映射到數據庫的過程

生成遷移:python manage.py makemigrations

執行遷移:python manage.py migrate

?

  1. 創建應用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:
      測試代碼文件

?

  1. 基本視圖

  首先我們在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中將appurls包含進來
  from django.conf.urls import include
  url(r‘^welcome/‘,include(‘App.urls‘))
?
  堂練習:新建一個應用showtime,每次刷新頁面顯示不同的時間。

?

  1. 基本模板

  模板實際上就是我們用HTML寫好的頁面
  建模板文件夾templates, 在模板文件夾中創建模板文件
  views中去加載渲染模板, 使用render函數: return render(request,‘xxx‘)






  1. 定義模型在models.py 中引入modelsfrom django.db import models

創建自己的模型類,但切記要繼承自 models.Model

案例驅動: 使用模型定義班級,並在模板上顯示班級列表

  班級: table : grade
    columns: 
            班級名稱 - name
            成立時間 - date
            女生個數 - girlnum
            男生個數 - boynum
            是否刪除 - is_delete

  1. Admin 後臺管理

    在admin.py中將model加入後臺管理:

    admin.site.register(Grade)

    創建超級用戶:python manage.py createsuperuser

    訪問admin後臺:http://127.0.0.1:8000/admin/

  1. 展示班級列表

    在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 %}

  1. 配置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文件簡介