• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • Django day01

    1.web應用程序處理流程:

    在這里插入圖片描述
    服務器程序:
    主要就是接收http報文,進行解析
    框架程序:
    根據解析好的報文,進行處理,實現業務處理(視圖)
    中間層:

    2.Django

    **主要目的:**簡便,快速開發數據庫驅動。代碼復用
    **特點:**重量級框架:原生提供眾多的功能組件。

    MVT模式:

    模型 數據庫 模板
    在這里插入圖片描述

    • M全拼為Model,與MVC中的M功能相同,負責和數據庫交互,進行數據處理。
    • V全拼為View,與MVC中的C功能相同,接收請求,進行業務處理,返回應答。
    • T全拼為Template,與MVC中的V功能相同,負責封裝構造要返回的html。

    mvc模式說明:

    在這里插入圖片描述

    • M全拼為Model,主要封裝對數據庫層的訪問,對數據庫中的數據進行增、刪、改、查操作。
    • V全拼為View,用于封裝結果,生成頁面展示的html內容。
    • C全拼為Controller,用于接收請求,處理業務邏輯,與Model和View交互,返回結果。

    工程搭建:

    1.環境的安裝:

    安裝虛擬環境,

    mkvirtualenv django_py3_1.11 -p python3
    

    安裝Django:注意一定要指定好版本

    創建工程:

    創建工程,推薦在命令行中使用命令來創建,使用pycham來進行創建,在很多時候,會給配置很多東西,從而造成上線時候出現未知的問題。
    創建工程的命令為:

    django-admin startproject 工程名稱
    

    工程目錄的結構:

    在這里插入圖片描述

    setting.py :是項目的整體配置文件:比如 DEBUG 的開關,靜態文件的位置等等。
    urls.py 是項目的URL配置文件。
    wsgi.py 是項目與WSGI兼容的Web服務器入口。
    manage.py 是項目管理文件,通過它管理項目。
    

    運行開發服務器:

    運行服務器命令如下:

    python manage.py runserver ip:端口
    或:
    python manage.py runserver
    

    創建子應用:

    創建子應用的命令

    python manage.py startapp 子應用名稱
    

    子項目結構

    在這里插入圖片描述
    admin.py 文件跟網站的后臺管理站點配置相關。
    apps.py 文件用于配置當前子應用的相關信息。
    migrations 目錄用于存放數據庫遷移歷史文件。
    models.py 文件用戶保存數據庫模型類。
    tests.py 文件用于開發測試用例,編寫單元測試。
    views.py 文件用于編寫Web應用視圖。

    注冊安裝子應用:

    在setting.py中的,將子應用的配置信息文件apps.py中的Config類添加到INSTALLED_APPS列表中。

    創建視圖:

    1. 創建
      打開剛創建的users模塊,在views.py中編寫視圖代碼。
      from django.http import HttpResponse

      def index(request):
      “”"
      index視圖
      :param request: 包含了請求信息的請求對象
      :return: 響應對象
      “”"
      return HttpResponse(“hello the world!”)

    說明:
    視圖函數的第一個傳入參數必須定義,用于接收Django構造的包含了請求數據的HttpReqeust對象,通常名為request。
    視圖函數的返回值必須為一個響應對象,不能像Flask一樣直接返回一個字符串,可以將要返回的字符串數據放到一個HTTPResponse對象中。

    2. 定義路由URL

    1. 在子應用中新建一個urls.py文件用于保存該應用的路由。

    2. 在users/urls.py文件中定義路由信息。

      from django.conf.urls import url

      from . import views

      #urlpatterns是被django自動識別的路由列表變量
      urlpatterns = [
      # 每個路由信息都需要使用url函數來構造
      # url(路徑, 視圖)
      url(r’^index/$’, views.index),
      ]

    3. 在工程總路由demo/urls.py中添加子應用的路由數據。

      from django.conf.urls import url, include
      from django.contrib import admin
      

      urlpatterns = [
      url(r’^admin/’, admin.site.urls), # django默認包含的

      #添加
      

      url(r’^users/’, include(‘users.urls’)),
      ]

    使用include來將子應用users里的全部路由包含進工程路由中;
    r’^users/’ 決定了users子應用的所有路由都已/users/開頭,如我們剛定義的視圖index,其最終的完整訪問路徑為/users/index/。

    include函數除了可以傳遞字符串之外,也可以直接傳遞應用的urls模塊,如

    from django.conf.urls import url, include
    from django.contrib import admin
    import users.urls  # 先導入應用的urls模塊
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        # url(r'^users/', include('users.urls')),
        url(r'^users/', include(users.urls)),  # 添加應用的路由
    ]
    
    1. 啟動運行
      重新啟動django程序

      python manage.py runserver

    在瀏覽器中輸入網址127.0.0.1:8000/users/index/ 可看到返回的信息

    配置,靜態文件與路由

    配置文件:
    1. BASE_DIR

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    

    當前工程的根目錄,Django會依此來定位工程內的相關文件,我們也可以使用該參數來構造文件路徑。
    2.DEBUG:
    初始值為True:修改代碼文件后,程序會自動重啟
    若程序出現問題,則會在前端顯示問題和代碼
    3.語言和時間
    Django支持本地化處理
    語言和時區修改為中國大陸信息

    LANGUAGE_CODE = 'zh-hans'
    TIME_ZONE = 'Asia/Shanghai'
    

    靜態文件:

    需要配置兩個參數:

    STATICFILES_DIRS 存放查找靜態文件的目錄
    STATIC_URL 訪問靜態文件的URL前綴
    

    注意
    Django 僅在調試模式下(DEBUG=True)能對外提供靜態文件。
    當DEBUG=False工作在生產模式時,Django不再對外提供靜態文件,需要是用collectstatic命令來收集靜態文件并交由其他靜態文件服務器來提供。

    5.路由
    在這里插入圖片描述
    1.路由的路徑
    Django的主要路由信息定義在工程同名目錄下的urls.py文件中,該文件是Django解析路由的入口。
    每個子應用為了保持相對獨立,可以在各個子應用中定義屬于自己的urls.py來保存該應用的路由。然后用主路由文件包含各應用的子路由數據。主路由
    當然也可直接放在主路由文件中,但不提倡
    2.解析順序:自上而下
    提示:
    需要注意定義路由的順序,避免出現屏蔽效應。

    3.命名
    在定義路由的時候,可以為路由命名,方便查找特定視圖的具體路徑信息。

    1. 在使用include函數定義路由時,可以使用namespace參數定義路由的命名空間,如

      url(r’^users/’, include(‘users.urls’, namespace=‘users’)),

    命名空間表示,凡是users.urls中定義的路由,均屬于namespace指明的users名下。
    命名空間的作用:避免不同應用中的路由使用了相同的名字發生沖突,使用命名空間區別開。
    2) 在定義普通路由時,可以使用name參數指明路由的名字,如

    urlpatterns = [
        url(r'^index/$', views.index, name='index'),
        url(r'^say', views.say, name='say'),
    ]
    

    reverse反解析
    作用:1 生成路由地址規范
    2 不修改引用路由地址的代碼

    使用reverse函數,可以根據路由名稱,返回具體的路徑,如:

    from django.urls import reverse  # 注意導包路徑
    
    def index(request):
        return HttpResponse("hello the world!")
    
    def say(request):
        url = reverse('users:index')  # 返回 /users/index/
        print(url)
        return HttpResponse('say')
    

    對于未指明namespace的,reverse(路由name)
    對于指明namespace的,reverse(命名空間namespace:路由name)
    路徑結尾斜線/的說明
    Django中定義路由時,通常以斜線/結尾,其好處是用戶訪問不以斜線/結尾的相同路徑時,Django會把用戶重定向到以斜線/結尾的路徑上,而不會返回404不存在。如
    urlpatterns = [
    url(r’^index/$’, views.index, name=‘index’),
    ]

    用戶訪問 index 或者 index/ 網址,均能訪問到index視圖。
    說明:
    雖然路由結尾帶/能帶來上述好處,但是卻違背了HTTP中URL表示資源位置路徑的設計理念。
    是否結尾帶/以所屬公司定義風格為準。

    請求

    回想一下,利用HTTP協議向服務器傳參有幾種途徑?
    提取URL的特定部分,如/weather/beijing/2018,可以在服務器端的路由中用正則表達式截取;
    查詢字符串(query string),形如key1=value1&key2=value2;
    請求體(body)中發送的數據,比如表單數據、json、xml;
    在http報文的頭(header)中。
    URL路徑參數

    在這里插入圖片描述

    版權聲明:本文為qq_36171645原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/qq_36171645/article/details/90948223

    智能推薦

    Day01

    Markdown學習 標題: #+空格+標題名字(#數量即標題級數) 二級標題 三級標題 四級標題 字體 加粗:兩個*包起來 Hello ,World! 斜體:一個*包起來 hello,world! 斜體加粗:三個*包起來 hello,world! 刪除線:兩個~包起來 hello,world! 引用 (>內容):沒有括號 好的呢! 分割線 三個- 三個* 圖片 格式:![名字]括號+網址 ...

    Hadoop Day01

    一.大數據 大數據介紹 1.大數據的由來 隨著計算機技術的發展,互聯網的普及,信息的積累已經到了一個非常龐大的地步,信息的增長也在不斷的加快,隨著互聯網,物聯網建設的加快,信息更是爆炸式增長,收集,檢索,統計這些信息越發困難,必須使用新的技術來解決這些問題 2.什么是大數據 大數據的定義: 大數據指無法在一定時間范圍內用常規軟件工具進行捕捉,管理和處理的數據的集合,需要新處理模式才能具有更強的決策...

    Scala day01

    Scala是基于Java虛擬機,也就是JVM的一門編程語言,所以有Scala代碼都需要經過編譯為字節碼,然后由Java虛擬機運行. Scala和Java是可以無縫互操作的,Scala可以任意調用Java的代碼. Scala解釋器 REPL:會快速編譯Scala代碼為字節碼,然后交給JVM來執行. 計算表達式:在Scala內部命令行內輸入Scala代碼,解釋器會直接返回結果,如果沒有指定變量來存放這...

    day01

    Markdown 標題: 二級標題 三級標題 四級標題 字體 hello,world 加粗:兩邊加兩個星號 hello,world 斜體:兩邊加一個星號 hello,world 刪除線:兩邊加波浪線 引用 引用:大于符號空格回車(一般用于引用別人的文章) 分割線 分割線:三個—或者三個星號回車生成分割線 圖片 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳()(C...

    Day01

    Markdown學習 標題級 ? 最多六級 字體 ? 粗體:one ? 斜體:two 引用 狂神說Java 分割線 圖片 ? 超鏈接 ? 鏈接 列表 表格 名字 性別 生日 張三 男 1997.1.1 代碼 public ```...

    猜你喜歡

    Spring——day01

    目錄結構 第一個spring項目 Student實體類 applicationConext.xml Test測試類  ...

    Java Day01

    1.1Java虛擬機——JVM JVM:java虛擬機,簡稱JVM,是運行所有java程序的假象計算機,是java程序的運行環境,是java最具有吸引力的特性之一。我們編寫的java代碼,都運行在JVM之上。 跨平臺:任何軟件的運行,都必須要運行在操作系統之上,而我們用java編寫的軟件可以運行在任何操作系統上,這個特性稱為Java語言的跨平臺特性。該特性室友JVM實現的,...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    精品国产乱码久久久久久蜜桃不卡