<wbr id="wsjqy"></wbr>

          <form id="wsjqy"></form>
          <sub id="wsjqy"></sub>
          <nav id="wsjqy"><listing id="wsjqy"></listing></nav>
          更多課程 選擇中心


          Python培訓

          400-111-8989

          不清楚Python Django框架的看過來,小白也能看懂!

          • 發布:PyExChange
          • 來源:碼農程序
          • 時間:2019-01-16 11:32

          今天達內python培訓主要為大家進行Python Django框架由淺入深的講解,今天的分享小白也能看懂!不信就來瞧瞧吧:

          1、Django簡介

          Python下有多款不同的 Web 框架,Django是最有代表性的一種。許多成功的網站和APP都基于Django。

          Django是一個開源的Web應用框架,由Python寫成。

          Django采用了MVC的軟件設計模式,即模型M,視圖V和控制器C。

          2、Django的特點

          1) 強大的數據庫功能:用python的類繼承,幾行代碼就可以擁有一個動態的數據庫操作API,如果需要也能執行SQL語句。

          2) 自帶的強大的后臺功能:幾行代碼就讓網站擁有一個強大的后臺,輕松管理內容。

          3) 優雅的網址:用正則匹配網址,傳遞到對應函數。

          4) 模板系統:強大,易擴展的模板系統,設計簡易,代碼和樣式分開設計,更易管理。

          5) 緩存系統:與memcached或其它緩存系統聯用,表現更出色,加載速度更快。

          6) 國際化:完全支持多語言應用,允許你定義翻譯的字符,輕松翻譯成不同國家的語言。

          3、Django項目目錄

          1) urls.py:網址入口,關聯到對應的views.py中的一個函數(或generic類),訪問網址就對應一個函數。

          2) views.py:處理用戶發出的請求,與urls.py對應, 通過渲染templates中的網頁可以將顯示內容,如登陸后的用戶名,用戶請求的數據等輸出到網頁。

          3) models.py:與數據庫操作相關,存入或讀取數據時用到,用不到數據庫時可以不使用。

          4) forms.py:表單,用戶在瀏覽器上輸入數據提交,對數據的驗證工作以及輸入框的生成等工作,也可以不使用。

          5) templates文件夾:views.py中的函數渲染templates中的html模板,得到動態內容的網頁,可以用緩存來提高速度。

          6) admin.py:后臺,可以用很少的代碼就擁有一個強大的后臺。

          7) settings.py:Django 的配置文件,如 DEBUG 的開關,靜態文件的位置等。

          4、Django基本命令

          1) 新建一個項目:

          django-admin.py startproject project-name

          在 windows 上如果報錯,嘗試用 django-admin 代替 django-admin.py 。

          2) 新建一個APP:

          python manage.py startapp app-name

          django-admin.py startapp app-name

          一般一個項目有多個app, 當然通用的app也可以在多個項目中使用。

          3) 啟動服務器:

          python manage.py runserver 0.0.0.0:8000

          python manage.py runserver

          前者讓其它電腦可連接到服務器,監聽機器上所有ip的8000端口,訪問時用電腦的ip代替 127.0.0.1(8000為端口號,如果不說明,則端口號默認為8000);后者在本電腦訪問服務器,訪問時ip為127.0.0.1。

          5、視圖與網址

          views.py:

          from django.http import HttpResponse
          
          def helloWorld(request):
          
          return HttpResponse("Hello world! ")

          urls.py:

          啟動服務器,并在瀏覽器訪問:127.0.0.1:8000。

          修改后的urls.py:

          from django.conf.urls import url
          
          from . import view
          
          urlpatterns = [
          
          url(r'^helloWorld$', view.helloWorld)
          
          ]

          啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/helloWorld。

          url() 函數:可以接收四個參數,分別是兩個必選參數regex、view 和兩個可選參數kwargs、name:

          ① regex:正則表達式,與之匹配的 URL 會執行對應的第二個參數 view。

          ② view:用于執行與正則表達式匹配的 URL 請求。

          ③ kwargs:視圖使用的字典類型的參數。

          ④ name:用來反向獲取 URL。

          6、Django模板

          1) 實例:

          ① 在app目錄中,創建 templates 目錄并建立 helloWorld.html文件:

          <h1>{{ helloWorld }}</h1>

          ② 向Django說明模板文件的路徑,修改settings.py文件,修改 TEMPLATES 中的 DIRS 為 [BASE_DIR+"/templates",]。

          ③ 修改views.py:

          from django.shortcuts import render
          
          def hello(request):
          
          context = {}
          
          context['helloWorld'] = 'Hello World!'
          
          return render(request, 'helloWorld.html', context)

          render使用了一個字典 context 作為參數,context 字典中元素的鍵值 "helloWorld" 對應了模板中的變量 "{{ helloWorld }}"。

          ④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/helloWorld。

          2) Django 模板標簽

          ① if/else 標簽

          if/else支持嵌套,{% if %} 標簽接受and、or 或not關鍵字來對多個變量做判斷,或對變量取反。

          {% if condition %}

          ...

          {% endif %}

          或者:

          {% if condition1 %}

          ...

          {% elif condiiton2 %}

          ...

          {% else %}

          ...

          {% endif %}

          ② for 標簽

          {% for %} 允許在一個序列上迭代。支持嵌套。每一次循環中,模板系統會渲染在 {% for %} 和 {% endfor %} 之間的所有內容。

          <ul>

          {% for person in list %}

          <li>{{ person.name }}</li>

          {% endfor %}

          </ul>

          給標簽增加一個 reversed 使得該列表被反向迭代:

          {% for person in list %}

          ...

          {% endfor %}

          ③ ifequal/ifnotequal 標簽

          {% ifequal %} 標簽比較兩個值,當他們相等時,顯示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。和 {% if %} 類似, {% ifequal %} 支持可選的 {% else%} 標簽。

          {% ifequal person1 person2 %}

          <h1>YES</h1>

          {% endifequal %}

          ④ 注釋標簽

          Django 注釋使用 {# #}。

          ⑤ 過濾器

          模板過濾器可以在變量被顯示前修改它,過濾器使用管道字符:

          {{ name|lower }}大寫轉換為小寫。

          一個過濾器管道的輸出又可以作為下一個管道的輸入:

          {{ name|first|upper }}將第一個元素轉化為大寫。

          有些過濾器有參數,過濾器的參數跟隨冒號之后并總是以雙引號包含:

          {{ name|truncatewords:"3" }}顯示變量的前3個詞。

          addslashes:添加反斜杠到任何反斜杠、單引號或者雙引號前面。

          date:按指定的格式字符串參數格式化date或datetime對象,如{{ pub_date|date:"F j, Y" }}。

          length:返回變量的長度。

          ⑥ include 標簽

          {% include %} 標簽允許在模板中包含其它的模板的內容。

          {% include "test.html" %}

          7、Django模型

          Django 對各種數據庫提供了很好的支持,Django 為數據庫提供了統一的調用API,可以根據業務需求選擇不同的數據庫。

          以MYSQL數據庫為例,安裝 mysql 驅動的命令:sudo pip install mysqlclient。

          1) 數據庫配置

          在項目的settings.py文件中找到 DATABASES 配置項,將其信息修改為:

          DATABASES = {
          
          'default': {
          
          'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
          
          'NAME': 'test',
          
          'USER': 'test',
          
          'PASSWORD': 'test123',
          
          'HOST':'localhost',
          
          'PORT':'3306',
          
          }
          
          }

          這里添加了中文注釋,所以需要在settings.py 文件頭部添加 # -*- coding: UTF-8 -*-。

          2) 定義模型

          ① 創建APP:

          Django規定,如果要使用模型,必須要創建一個app,使用以下命令創建一個app:python manage.py startapp TestModel。

          ② 修改 TestModel/models.py 文件:

          from django.db import models
          
          class Test(models.Model):
          
          ame = models.CharField(max_length=20)

          類名代表了數據庫表名,且繼承了models.Model,類里面的字段代表數據表中的字段(name),數據類型則由CharField(相當于varchar)、DateField(相當于datetime), max_length 參數限定長度。

          ③ 在settings.py中找到INSTALLED_APPS這一項,添加:'TestModel'。

          ④ 在命令行中運行以下命令,創建數據表,表名為應用名_類名(如:TestModel_test):

          view plain copy

          python manage.py migrate # 創建表結構
          
          python manage.py makemigrations TestModel # 讓Django知道模型有一些變更
          
          python manage.py migrate TestModel # 創建表結構

          3) 數據庫操作

          添加database.py文件:

          [python] view plain copy

          from django.http import HttpResponse
          
          from TestModel.models import Test
          
          def database(request):
          
          test = Test(name='Alice')
          
          test.save()
          
          return HttpResponse("<p>數據添加成功!</p>")

          修改 urls.py:

          view plain copy

          from django.conf.urls import *
          
          from . import view,database
          
          urlpatterns = [
          
          url(r'^hello$', view.hello),
          
          url(r'^database$', database.database)
          
          ]

          啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/database。

          ① 添加數據

          [python] view plain copy

          from django.http import HttpResponse
          
          from TestModel.models import Test
          
          def database(request):
          
          test = Test(name='Alice')
          
          test.save()
          
          return HttpResponse("<p>數據添加成功!</p>")

          ② 獲取數據

          [python] view plain copy

          from django.http import HttpResponse
          
          from TestModel.models import Test
          
          def database(request):
          
          # 初始化
          
          response = ""
          
          response1 = ""
          
          # 通過objects這個模型管理器的all()獲得所有數據行,相當于SQL中的SELECT * FROM
          
          list = Test.objects.all()
          
          # filter相當于SQL中的WHERE,可設置條件過濾結果
          
          response2 = Test.objects.filter(id=1)
          
          # 獲取單個對象
          
          response3 = Test.objects.get(id=1)
          
          # 限制返回的數據,相當于SQL中的OFFSET 0 LIMIT 2;
          
          Test.objects.order_by('name')[0:2]
          
          # 數據排序
          
          Test.objects.order_by("id")
          
          # 上面的方法可以連鎖使用
          
          Test.objects.filter(name="Alice").order_by("id")
          
          # 輸出所有數據
          
          for var in list:
          
          response1 += var.name + " "
          
          response = response1
          
          return HttpResponse("<p>" + response + "</p>")

          ③ 更新數據

          [python] view plain copy

          from django.http import HttpResponse
          
          from TestModel.models import Test
          
          def database(request):
          
          # 修改id=1的name字段再save,相當于SQL中的UPDATE
          
          test = Test.objects.get(id=1)
          
          test.name='Alice'
          
          test.save()
          
          # 另一種方式
          
          # Test.objects.filter(id=1).update(name='Alice)
          
          # 修改所有的列
          
          # Test.objects.all()..update(name='Google')
          
          return HttpResponse("<p>數據修改成功</p>")

          ④ 刪除數據

          刪除數據庫中的對象只需調用該對象的delete()方法即可:

          [python] view plain copy

          from django.http import HttpResponse
          
          from TestModel.models import Test
          
          def database(request):
          
          # 刪除id=1的數據
          
          test = Test.objects.get(id=1)
          
          test.delete()
          
          # 另外一種方式
          
          # Test.objects.filter(id=1).delete()
          
          # 刪除所有數據
          
          # Test.objects.all().delete()
          
          return HttpResponse("<p>數據刪除成功</p>")

          8、Django表單

          1) Get方法

          ① 創建一個 search.py 文件,用于接收用戶的請求:

          [python] view plain copy

          from django.http import HttpResponse
          
          from django.shortcuts import render_to_response
          
          # 表單
          
          def search_form(request):
          
          return render_to_response('search_form.html')
          
          # 接收請求數據
          
          def search(request):
          
          request.encoding='utf-8'
          
          if 'q' in request.GET:
          
          message = '搜索的內容為: ' + request.GET['q'].encode('utf-8')
          
          else:
          
          message = '提交了空表單'
          
          return HttpResponse(message)

          ② 在templates中添加 search_form.html 表單:

          [html] view plain copy

          <!DOCTYPE html>
          
          <html>
          
          <head>
          
          <meta charset="utf-8">
          
          <title></title>
          
          </head>
          
          <body>
          
          <form action="/search" method="get">
          
          <input type="text" name="q">
          
          <input type="submit" value="搜索">
          
          </form>
          
          </body>
          
          </html>

          ③ 修改urls.py:

          [python] view plain copy

          from django.conf.urls import url
          
          from . import view,database,search
          
          urlpatterns = [
          
          url(r'^helloWorld$', view.helloWorld),
          
          url(r'^database$', database.database),
          
          url(r'^search-form$', search.search_form),
          
          url(r'^search$', search.search)
          
          ]

          ④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/search_form。

          2) Post方法

          ① 在templates中添加 post.html 表單:

          [python] view plain copy

          <!DOCTYPE html>
          
          <html>
          
          <head>
          
          <meta charset="utf-8">
          
          <title></title>
          
          </head>
          
          <body>
          
          <form action="/search-post" method="post">
          
          {% csrf_token %}
          
          <input type="text" name="q">
          
          <input type="submit" value="搜索">
          
          </form>
          
          <p>{{ rlt }}</p>
          
          </body>
          
          </html>

          {% csrf_token %}標簽:csrf 全稱是 Cross Site Request Forgery,這是Django提供的防止偽裝提交請求的功能。POST 方法提交的表格,必須有此標簽。

          ② 新建 search2.py 文件并使用 search_post 函數來處理 POST 請求:

          [python] view plain copy

          from django.shortcuts import render
          
          from django.views.decorators import csrf
          
          # 接收POST請求數據
          
          def search_post(request):
          
          ctx ={}
          
          if request.POST:
          
          ctx['rlt'] = request.POST['q']
          
          return render(request, "post.html", ctx)

          ③ 修改urls.py:

          [python] view plain copy

          from django.conf.urls import url
          
          from . import view,database,search
          
          urlpatterns = [
          
          url(r'^helloWorld$', view.helloWorld),
          
          url(r'^database$', database.database),
          
          url(r'^search-form$', search.search_form),
          
          url(r'^search$', search.search)
          
          url(r'^search-post$', search2.search_post)
          
          ]

          ④ 啟動服務器,并在瀏覽器訪問:127.0.0.1:8000/search_post。

          感謝您的閱讀,以上就是對Python Django框架進行的知識梳理講解,包括Django簡介、特點、項目目錄等內容,你都學會了嗎?更多python相關的問題,歡迎您來達內python培訓機構進行咨詢。

          免責聲明:內容和圖片源自網絡,版權歸原作者所有,如有侵犯您的原創版權請告知,我們將盡快刪除相關內容。

          預約申請免費試聽課

          填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

          上一篇:掌握這八個Python高效數據分析的技巧,Python大神都會的!
          下一篇:Python相關的二十二個編程技巧,除了你我誰都沒告訴!

          如何運用Python編程處理大數據?用Python編程處理大數據的技巧是什么?

          Python面向對象編程的知識點都在這了!

          Python的高級特征及用法(部分)

          聽說這些Python知識,很少有人知道!

          • 掃碼領取資料

            回復關鍵字:視頻資料

            免費領取 達內課程視頻學習資料

          • 視頻學習QQ群

            添加QQ群:1143617948

            免費領取達內課程視頻學習資料

          Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

          選擇城市和中心
          黑龍江省

          吉林省

          河北省

          湖南省

          貴州省

          云南省

          廣西省

          海南省

          网友自拍 偷拍 校园性爱青青草曰逼视屏老鸭窝国产偷自视频区视频 百度 好搜 搜狗
          <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>