日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

惊了!最通俗易懂的Djongo入门竟然在这里!

發(fā)布時間:2023/12/10 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 惊了!最通俗易懂的Djongo入门竟然在这里! 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • Django簡介
  • python下有多款不同的web框架,Django是最有代表行的一種。許多成功的網(wǎng)站和app都基于djanfo。
  • django是一個開源的web應(yīng)用框架,由python寫成。
  • django采用了MVC的軟件設(shè)計模式,即模型M,視圖V和控制器C。
    • Django特點
  • 強大的數(shù)據(jù)庫功能:用python的類繼承,幾行代碼就可以擁有一個動態(tài)的數(shù)據(jù)庫操作API,如果需要也能執(zhí)行SQL語句。
  • 自帶的強大的后臺功能:幾行代碼就讓網(wǎng)站擁有一個強大的后臺,輕松管理內(nèi)容。
  • 優(yōu)雅的網(wǎng)址:用正則匹配網(wǎng)址,傳遞到對應(yīng)函數(shù)。
  • 模板系統(tǒng):強大,易擴展的模板系統(tǒng),設(shè)計簡易,代碼和樣式分開設(shè)計,更易管理。
  • 緩存系統(tǒng):與memcached或其它緩存系統(tǒng)聯(lián)用,表現(xiàn)更出色,加載速度更快。
  • 國際化:完全支持多語言應(yīng)用,允許你定義翻譯的字符,輕松翻譯成不同國家的語言。
    • Django項目目錄

      manage.py:用來管理當前項目的一個命令行工具

      myproject/: 項目主文件夾

      myproject/__init__.py:空文件,用來指明當前的myproject為一個可導(dǎo)入的模塊包

      myproject/settings.py:項目主要配置文件

      myproject/urls.py:項目主要路由配置文件

      myproject/wsgi.py:項目部署WSGI并發(fā)服務(wù)器時所需要的配置

    • 安裝Django

      • pip install django 默認安裝最新版本
      • pip install django==2.0.4? ?(指定版本號安裝)

    ?

    • 創(chuàng)建項目

    ?

      • django-admin startproject mypro
    創(chuàng)建好項目之后,我們進入項目文件夾中。用下面的命令就可以運行Django項目了。默認情況下,我們可以通過http://127.0.0.1:8000/來訪問正在運行的項目。由于沒有任何頁面,所以會顯示這么一個調(diào)試窗口。
    • 開啟開發(fā)服務(wù)器
      • cd myproject     ? ? ? ? ? ? ? ? ? ? ? ? ? ?進入項目目錄
      • python manage.py runserver? ? ? ? ? ? ? ? ?開啟服務(wù)
      • python manage.py runserver 7000? ? ? ? 改變服務(wù)監(jiān)聽端口
      • python manage.py runserver 0:8000? ? ? ?改變服務(wù)監(jiān)聽IP:端口
    • 配置settings.py
      • BASE_DIR : 當前項目工作目錄,用來在每一次開啟項目時動態(tài)找到相關(guān)資源路徑
      • SECRET_KEY : 加密的hash值以及保護某些簽名數(shù)據(jù)的關(guān)鍵密鑰
      • DEBUG : 調(diào)試模式
      • ALLOWED_HOSTS : 有哪些主機或域名可以訪問當前django站點,如設(shè)置為*代表全部可訪問。
      • INSTALL_APPS : django項目中所有使用的應(yīng)用名稱,自創(chuàng)建子應(yīng)用也要加到這里,不然ORM數(shù)據(jù)庫無法被識別到!
      • MIDDLEWARE : django中間件,用來在request或reponse過程中添加功能,比如確保安全性,傳輸保存Session等
      • SecurityMiddleware : xss腳本過濾,一些安全設(shè)置
      • SessionMiddleware : session支持中間件,在每次用戶訪問django項目時,添加session對每一個瀏覽器
      • CommonMiddleware : 通用組件,比如為路由添加末尾斜杠
      • CsrfViewMiddleware : 防跨站請求偽造令牌,為客戶端添加csrf_token密鑰,在表單提交時需提交該值
      • AuthenticationMiddleware : admin用戶組件,每個request對象都會被添加admin下的user屬性
      • MessageMiddleware : 消息中間件 展示一些后臺消息給前端
      • XFrameOptionsMiddleware : 防止欺騙點擊攻擊出現(xiàn);自身頁面被嵌入到他人頁面中,點擊欺騙
      • ROOT_URLCONF : 主路由配置文件,字符串填寫url.py文件路徑
      • TEMPLATES?: 模板文件配置項
      • WSGI_APPLICATION : WSGI服務(wù)器配置項,找到當前django下的wsgi引入APP文件
      • DATABASES : 數(shù)據(jù)庫配置項,默認使用SQLite3,一個本地文件數(shù)據(jù)庫
      • AUTH_PASSWORD_VALIDATORS : 檢查用戶密碼強度的驗證程序列表,不過是針對admin界面下的用戶,而非自定義
      • LANGUAGE_CODE : django所使用語言文件
      • TIME_ZONE : django所使用時區(qū)
      • USE_I18N : 國際化支持 18表示Internationalization這個單詞首字母I和結(jié)尾字母N之間的字母有18個
      • USE_L10N : 是localization的縮寫形式,意即在l和n之間有10個字母
      • USE_TZ :開啟了Time Zone功能,則所有的存儲和內(nèi)部處理,包括print顯示的時間將是是UTC時間格式
      • STATIC_URL : URL訪問靜態(tài)資源時的路徑
    • 創(chuàng)建子應(yīng)用
      • 項目和應(yīng)用有啥區(qū)別?
    應(yīng)用是一個專門做某件事的網(wǎng)絡(luò)應(yīng)用程序——比如博客系統(tǒng),或者公共記錄的數(shù)據(jù)庫,或者簡單的投票程序。 項目則是一個網(wǎng)站使用的配置和應(yīng)用的集合。項目可以包含很多個應(yīng)用。應(yīng)用可以被很多個項目使用
    • 創(chuàng)建app
    在Django項目中,app表示更小的一個功能單位,比方說在一個博客管理系統(tǒng)中,對博客的增刪查改等功能就應(yīng)該聚合在一個app中。進入項目目錄中,用startapp命令創(chuàng)建app。
        • cd mypro
        • django-admin startapp helloapp
    • 頁面和視圖
      • 視圖函數(shù)
    打開app下的views.py文件Web訪問起始就是通過一個URL連接地址訪問到服務(wù)器上的一個函數(shù)在views.py中我們通過編寫函數(shù)的形式,接收用戶請求的request并返回一個response

    ?

    1 # 每一個視圖函數(shù)都需要有一個必須參數(shù) request,用來接收用戶訪問時的請求內(nèi)容 2 from django.http import HttpResponse 3 def index(request): 4 return HttpResponse("<h1>Hello world</h1>

    ?

    ?    HttpResponse函數(shù)用來像用戶返回一個字符串。

    • 路由配置
    創(chuàng)建好了一個可以在請求時返回H1標簽的視圖函數(shù),但是現(xiàn)在通過瀏覽器還是訪問不到需要我們?yōu)檫@個app下的函數(shù)進行路由配置
      • 第一種簡單的路由配置,直接在主控路由文件下,找到這個視圖函數(shù)
    1 #myproject/urls.py 2 from django.contrib import admin 3 from django.urls import path 4 from myapp import views 5 urlpatterns = [ 6 path('admin/', admin.site.urls), #admin控制界面路由 7 path('',views.index) 8 #path函數(shù)第一個參數(shù)為訪問地址,空字符串代表:當用戶直接訪問首頁時 9 #第二個參數(shù)代表訪問該地址時對應(yīng)的視圖函數(shù),我們引入了app下的views中的index視圖函數(shù)。 10 ]

    ?

          接下來訪問127.0.0.1:8000,那么你會看到一個非常大的Hello world。

      • 以上將視圖函數(shù)的查找直接寫到主控路由并不是最好的辦法,我們的項目通常會有非常多的路由配置項,如果都堆到這個文件中肯定是非常亂的,難以維護;我們可以在對應(yīng)app下創(chuàng)建一個子路由控制文件,并在其中設(shè)置視圖的路由配置。
    1 #myapp/urls.py 2 from django.urls import path 3 from . import views 4 urlpatterns = [ 5 path("",views.index) 6 ]

    ?

      • ?現(xiàn)在雖然配置了app下的路由文件,但是訪問時,是看不到對應(yīng)視圖的結(jié)果這是因為默認的url查找動作將會從主控路由文件開始,我們還需要在主控路由文件下進行路由分發(fā)設(shè)置,讓主控路由可以找到子app下的路由
    1 #myproject/urls.py 2 from django.contrib import admin 3 from django.urls import path,include 4 from myapp import views 5 urlpatterns = [ 6 path('admin/',admin.site.urls), 7 #path('',views.index) 8 path('',include("myapp.urls")), 9 # 函數(shù) include() 允許引用其它 URLconfs 10 ]

    ?

          接下來再次嘗試,在瀏覽器中訪問主機域名;如果可以看到的話,恭喜你,效果已經(jīng)很棒了!

    ?路由查找流程:

      1. 查找主控路由文件下的 urlpatterns 全局變量,這是一個序列數(shù)據(jù)類型,其中每一個元素都是對應(yīng)的一個路由匹配規(guī)則

      2. 如果在規(guī)則中查找到符合匹配規(guī)則的,則執(zhí)行其中的對應(yīng)執(zhí)行函數(shù)

      3. 如果對應(yīng)的不是一個執(zhí)行函數(shù),而是一個 include 路由包含,那么截斷與此項匹配的 URL 的部分,并將剩余的路由字符串發(fā)送到 include所包含的子路由文件中以供進一步處理4. 如果沒有匹配到的任何結(jié)果,django默認拋出 Page not found (404)

      注意:Django的路由不考慮HTTP請求方式,僅根據(jù)URL進行路由,即,只要URL相同,無論POST、GET等哪種請求方式都指向同一個操作函數(shù)。

    • path
    path函數(shù)用來處理一個路由對應(yīng)的事件 1 path(route, view, name) 2 #route: 匹配規(guī)則,是一個字符串 3 #view:對應(yīng)的視圖函數(shù) 4 #name:未來我們會用到他,用來為匹配規(guī)則命名,這樣方便日后修改路由而不影響全局下的路由使用
    • re_path
    re_path是path函數(shù)的加強版;可以在re_path函數(shù)的第一個位置的字符串參數(shù),寫入一個標準Python正則表達式,其余參數(shù)與path相同 注意:匹配模式的最開頭不需要添加/,因為默認情況下,每個url都帶一個最前面的/,既然大家都有的部分,就不用浪費時間特別寫一個了。
    • 模板頁面

      返回一個字符串這肯定是不行的,太low了,也不好看,現(xiàn)在來返回一個正式的HTML頁面。并在HTML頁面中加入模板變量,由視圖函數(shù)動態(tài)傳遞值;配置django中模板頁面的保存路徑,在項目目錄下的settings.py文件中。

    1 #myproject/settings.py 2 TEMPLATES = [ 3 { 4 'BACKEND': 'django.template.backends.django.DjangoTemplates', 5 'DIRS': [os.path.join(BASE_DIR,'template')], # 就是這一行設(shè)置靜態(tài)模板路徑 6 'APP_DIRS': True, 7 'OPTIONS': { 8 'context_processors': [ 9 'django.template.context_processors.debug', 10 'django.template.context_processors.request', 11 'django.contrib.auth.context_processors.auth', 12 'django.contrib.messages.context_processors.messages' 13 ], 14 }, 15 }, 16 ]

    ?

    創(chuàng)建template目錄并在其中創(chuàng)建index.html文件。 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>hi</title> 6 </head> 7 <body> 8 <h1>{{ message }}</h1> 9 </body> 10 </html>

      ?在HTML頁面中,我們并沒有明確指出H1標簽的內(nèi)容;通過一個{{ message }}來等待接收視圖函數(shù)傳來的數(shù)據(jù),在HTML頁面中這樣的變量也叫做模板變量,常用雙大括號語法。

      接下來修改之前的視圖函數(shù),由視圖函數(shù)傳遞變量給到HTML頁面。

    1 #myapp/views.py 2 from django.shortcuts import render 3 def index(request): 4 #return HttpResponse("<h1>Hello world</h1>") 5 content = {"message":"你好,世界" #此處的key值message對應(yīng)頁面中我們寫的{{ message }} 6 } 7 return render(request,'index.html',content)

    ?

    模板變量:     在django中的HTML頁面,不光可以編寫原本的標簽等內(nèi)容,還可以像Vue一樣在頁面中使用雙大括號,來提前定義一些模板變量。模板變量可以由后臺視圖函數(shù)構(gòu)建一個字典數(shù)據(jù)類型傳遞,字典的key是模板變量名,value值該模板變量對應(yīng)的數(shù)據(jù)。當然,模板變量的內(nèi)容遠不止此,還會再后面繼續(xù)為大家敘述。。。
    • ?為什么模板文件夾中還要在創(chuàng)建一個hello子文件夾呢?
    這是由于django的文件搜索機制所導(dǎo)致的。當搜索模板文件的時候django會從所有app的templates文件夾中搜索,但是并不會區(qū)分它們,所以如果在多個app中有相同的文件名,django會使用找到的第一個。因此為了區(qū)分它們我們只能自己多創(chuàng)建一層文件夾用于區(qū)分。
    • 頁面中使用URL
    當我們在頁面中需要使用路徑的時候,不要硬編碼路徑,最好使用url標簽。例如下面這樣的。 1 <a href="{% url 'hello' '張三' %}">你好,張三</a> 這里url標簽中指定的名稱是urls.py文件中路徑的name參數(shù)。 1 path('hello/<str:name>', views.hello, name='hello') 當項目中存在多個app的時候,需要使用命名空間來區(qū)分。做法很簡單,在urls.py文件中添加app_name屬性。 1 app_name = 'hello' urlpatterns = [ path('', views.index, name='index'), path('hello/<str:name>', views.hello, name='hello') ] 然后在標簽上添加用冒號分隔開的命名空間名稱即可。 1 <a href="{% url 'hello:hello' '張三' %}">你好,張三</a>
    • 靜態(tài)文件

      雖然有了模板頁面,可以來展示一些標簽的效果,但是整個HTML還是感覺很丑陋,所以,我們還要繼續(xù)引入
    一些類似css、img這樣的靜態(tài)資源,來裝飾我們的頁面。
      在django中模板頁面的靜態(tài)資源使用,不能像之前寫HTML代碼直接引入,需要我們首先在項目中創(chuàng)建目錄保
    存對應(yīng)的靜態(tài)資源。

      • 在settings中配置靜態(tài)文件保存目錄,添加如下內(nèi)容:

    ?? ?     有些靜態(tài)文件可能是多個app公用的,這時候需要進行一點額外設(shè)置。首先在和app同級的目錄創(chuàng)建static文件夾并將靜態(tài)文件放入。然后在配置文件中添加額外的搜索路徑配置。

           還是由于django文件搜索機制,我們最好在靜態(tài)目錄中添加一個public子文件夾和其他靜態(tài)文件區(qū)分。

    1 STATICFILES_DIRS = ( 2 os.path.join(BASE_DIR, 'static'), 3 ) 4 # STATICFILES_DIRS 該配置項用來告訴django在查找靜態(tài)資源時,應(yīng)該訪問哪個目錄
      • 在項目中創(chuàng)建static目錄,static目錄下創(chuàng)建專門保存圖片的img目錄,在里面存一張圖片1.jpg
    文件結(jié)構(gòu)類似下圖:

    ?

      需要注意的是,由于前面介紹的django文件搜索機制,在靜態(tài)文件夾中,我們最好在指定一級和app同名的文件夾用來區(qū)分不同app間的靜態(tài)文件。
      • 有了圖片,接下來在模板頁面中去引入并使用它,打開index.html進行修改:
    1 <!DOCTYPE html> 2 <html lang="en"> 3 {% load staticfiles %} 4 <head> 5 <meta charset="UTF-8"> 6 <title>hi</title> 7 </head> 8 <body> 9 <h1>{{ message }}</h1> 10 <img src='{% static "img/1.jpg" %}' alt="圖片"> 11 </body> 12 </html>

    ?

      • 這里用到了一個特殊語法: {% tag %} 這個叫靜態(tài)標簽,靜態(tài)標簽不同于模板變量,靜態(tài)標簽經(jīng)常用來加載數(shù)據(jù),或創(chuàng)建邏輯,比如之后我們要學(xué)到的 {% if %} ,使用靜態(tài)標簽可以方便我們在模板頁面上實現(xiàn)某些只有在后臺代碼中才可以實現(xiàn)的邏輯功能。
      • 在頁面中要引入靜態(tài)資源,圖片,CSS,JS文件,在引入時都需要通過 {% static "path" %} 來進行引入,并且在模板頁面頭部需要使用 {% load staticfiles %} 標簽進行靜態(tài)資源的加載。
    • 模型數(shù)據(jù)庫
    有了以上內(nèi)容的修飾,現(xiàn)在感覺還是缺少一些什么,我們在視圖函數(shù)中為前端頁面返回的是一個提前定義好的 變量,這顯然在真正開發(fā)中是很少出現(xiàn)的,我們的數(shù)據(jù)大都來自于數(shù)據(jù)庫中,那么現(xiàn)在需要我們在項目中加入 數(shù)據(jù)庫,并且在視圖函數(shù)中通過對數(shù)據(jù)庫的訪問來拿到數(shù)據(jù)
      • 創(chuàng)建數(shù)據(jù)庫,這里使用項目自帶的SQLite3數(shù)據(jù)庫,默認已經(jīng)是配好的,接下來需要我們進入到app下的models.py文件中,編寫一個類,這個類就對應(yīng)數(shù)據(jù)庫中的一張表。
    1 #myapp/models.py 2 from django.db import models 3 # Create your models here. 4 class Weather(models.Model): 5 weather = models.CharField(max_length=100,verbose_name="天氣") 6 class Meta:verbose_name_plural = "天氣" 7 # 設(shè)置當前表名的一個可讀的性更好的名字 8 def __str__(self): 9 return self.weather

    ?

      • 在這里我們使用到了django的orm映射關(guān)系用來創(chuàng)建數(shù)據(jù)庫表,繼承自django的models.Model類,一個類用來表示一張表,類中的一個屬性代表一個字段,這里我們定義了一個類型為CharField,長度為100的字段,用來存儲天氣。
      • 下面的class Meta是模型類的元類,用來設(shè)置當前表的一些屬性;這里我們使用verbose_name_plural屬性設(shè)置當前表在admin后臺查看時的名字
      • ?在這里我們還定義了一個屬于實例的函數(shù)__str__,用來描述當前數(shù)據(jù)在返回時的默認展示結(jié)果,為weather字段的值
      • django在創(chuàng)建模型類對應(yīng)的數(shù)據(jù)表時,默認使用 應(yīng)用名 加 下劃線 加 模型類名 作為表的名字;比如當前Weather表名為:myapp_Weather
        • orm映射關(guān)系,是django與數(shù)據(jù)庫之間的一個橋梁,可以使開發(fā)者不再關(guān)注如何去編寫SQL語句,直接通過一套ORM所提供的API接口即可方便對各種數(shù)據(jù)庫進行交互。
      • 當某個子應(yīng)用APP涉及到了數(shù)據(jù)庫的使用時,要記得在settings文件中進行配置:
    1 #myproject/settings.py 2 INSTALLED_APPS = [ 3 'django.contrib.admin', 4 'django.contrib.auth', 5 'django.contrib.contenttypes', 6 'django.contrib.sessions', 7 'django.contrib.messages', 8 'django.contrib.staticfiles', 9 'myapp', 10 ]

    ?

      • 接下來通過manage.py命令行管理工具提供的兩條,創(chuàng)建我們所需要的數(shù)據(jù)。
      • ?注意:默認django本身就已經(jīng)需要一些數(shù)據(jù)的創(chuàng)建,所以我們在初次執(zhí)行以下兩條命令時可能會看到很多數(shù)據(jù)表和字段的創(chuàng)建,不要驚訝,這是正常的
    1 python manage.py migrate # 根據(jù)數(shù)據(jù)庫遷移文件生成對應(yīng)SQL語句并執(zhí)行 2 # 初次執(zhí)行是為了先把默認django需要的數(shù)據(jù)庫創(chuàng)建出來 3 python manage.py makemigrations # 創(chuàng)建數(shù)據(jù)庫遷移文件 4 # 這次執(zhí)行是為了創(chuàng)建APP中Weather模型類的遷移文件 5 python manage.py # 將新添加的模型類遷移文件生成對應(yīng)SQL并執(zhí)行,實際創(chuàng)建出對應(yīng)的Weathe表 如果提示結(jié)果正常,那么代表相應(yīng)的數(shù)據(jù)表已經(jīng)創(chuàng)建好了,接下來就需要我們?nèi)サ絛jango為我們提供的admin(數(shù)據(jù)庫管理界面)來進行相關(guān)表的操作
    • Django Admin

      • admin控制臺是django為我們提供的一個非常便捷的用來管理數(shù)據(jù)庫的界面。在主控路由文件下,其實你已經(jīng)看到了它對應(yīng)的路由設(shè)置:path('admin/', admin.site.urls),
        • 進入admin界面,初次訪問連接:127.0.0.1/admin,會提示我們輸入賬號密碼,這是因為django的admin界面是需要一個超級管理員來登陸訪問的,所以還需要我們創(chuàng)建對應(yīng)的admin界面下的超級用戶
        • 創(chuàng)建admin超級用戶,使用manage.py命令行執(zhí)行如下命令:
    python manage.py createsuperuser

    ?

        • ?    
    Username (leave blank to use 'lienze'): root Email address: Password:Password (again): This password is too short. It must contain at least 8 characters. This password is too common. This password is entirely numeric. Password: Password (again): This password is too common. This password is entirely numeric. Password: Password (again): Superuser created successfully.

    ?

        • 以上是我們創(chuàng)建超級用戶的過程,非常坎坷;可以看到,在輸入太短(不滿足8位),或是只包含數(shù)字的簡單密碼,超級用戶的創(chuàng)建都是被拒絕的所以我們把用戶賬號創(chuàng)建為 root ,而密碼創(chuàng)建為 a1234567 ,接下來開啟測試服務(wù)器,并通過創(chuàng)建好的超級用戶登陸訪問,如果幸運的話,你已經(jīng)可以看到后臺的admin界面啦admin界面已經(jīng)展示出了默認django所使用的兩張表,用戶表和組表,用來保存當前管理后臺的用戶以及對應(yīng)權(quán)限分組,可以點入用戶表查看其中我們剛創(chuàng)建的root。
    • 啟動開發(fā)服務(wù)器

    Django 的管理界面默認就是啟用的。讓我們啟動開發(fā)服務(wù)器,看看它到底是什么樣的。 如果開發(fā)服務(wù)器未啟動,用以下命令啟動它: $ python manage.py runserver

    ?

    現(xiàn)在,打開瀏覽器,轉(zhuǎn)到你本地域名的 "/admin/" 目錄, -- 比如 "http://127.0.0.1:8000/admin/" 。你應(yīng)該會看見管理員登錄界面:
    • 進入管理站點頁面

    現(xiàn)在,試著使用你在上一步中創(chuàng)建的超級用戶來登錄。然后你將會看到 Django 管理頁面的索引頁: 你將會看到幾種可編輯的內(nèi)容:組和用戶。它們是由?django.contrib.auth?提供的,這是 Django 開發(fā)的認證框架。
    • admin注冊表
    雖然admin界面已經(jīng)可以進來,但是為什么看不到剛才創(chuàng)建的Weather表呢,這是因為默認的表創(chuàng)建之后,還需要通過對應(yīng)app下的 admin.py 文件進行admin后臺注冊,只有注冊在這個文件中的模型類對應(yīng)的表才可以在admin界面所看到
      • 在app下的admin.py文件中進行模型類的注冊:
    1 #myapp/admin.py 2 from django.contrib import admin 3 from myapp import models 4 admin.site.register(models.Weather) 5 #使用register函數(shù)接收模型類作為參數(shù)即可完成 注冊成功之后,在服務(wù)器,通過瀏覽器訪問 admin 界面,就可以看到創(chuàng)建好的Weather表了。 鼠標點擊進去之后,就可以看到對應(yīng)的表數(shù)據(jù)界面;右上角提供了可以添加功能的選項,試試給這個表來一些數(shù)據(jù)吧。
      • 例:
    注意事項:
    • 這個表單是從問題?Question?模型中自動生成的
    • 不同的字段類型(日期時間字段?DateTimeField?、字符字段?CharField)會生成對應(yīng)的 HTML 輸入控件。每個類型的字段都知道它們該如何在管理頁面里顯示自己。
    • 每個日期時間字段?DateTimeField?都有 JavaScript 寫的快捷按鈕。日期有轉(zhuǎn)到今天(Today)的快捷按鈕和一個彈出式日歷界面。時間有設(shè)為現(xiàn)在(Now)的快捷按鈕和一個列出常用時間的方便的彈出式列表。
    頁面的底部提供了幾個選項:
    • 保存(Save) - 保存改變,然后返回對象列表。
    • 保存并繼續(xù)編輯(Save and continue editing) - 保存改變,然后重新載入當前對象的修改界面。
    • 保存并新增(Save and add another) - 保存改變,然后添加一個新的空對象并載入修改界面。
    • 刪除(Delete) - 顯示一個確認刪除頁面。
    如果顯示的 “發(fā)布日期(Date Published)” 和你在?教程 1?里創(chuàng)建它們的時間不一致,這意味著你可能沒有正確的設(shè)置?TIME_ZONE?。改變設(shè)置,然后重新載入頁面看看是否顯示了正確的值。 通過點擊 “今天(Today)” 和 “現(xiàn)在(Now)” 按鈕改變 “發(fā)布日期(Date Published)”。然后點擊 “保存并繼續(xù)編輯(Save and add another)”按鈕。然后點擊右上角的 “歷史(History)”按鈕。你會看到一個列出了所有通過 Django 管理頁面對當前對象進行的改變的頁面,其中列出了時間戳和進行修改操作的用戶名:
    • 視圖操作模型
    最終我們希望可以在視圖函數(shù)中通過orm接口來訪問到表中的數(shù)據(jù),那么來打開視圖文件吧,views.py 1 #myapp/views.py 2 from django.shortcuts import render 3 from myapp import models 4 def index(request): 5 weathers = models.Weather.objects.all() 6 content = { 7 "weathers":weathers, 8 } 9 return render(request, 'index.html', content)

    ?

    光返回是不行的,雖然我們綁定到了模板版變量的字典中,但是還得修改一下對應(yīng)的要渲染的HTML頁面: 1 <!DOCTYPE html> 2 <html lang="en"> 3 {% load staticfiles %} 4 <head> 5 <meta charset="UTF-8"> 6 <title>hi</title> 7 </head> 8 <body> 9 {% for weather in weathers %} 10 <p>{{ weather }}</p> 11 {% empty %} 12 <p>沒有任何天氣</p> 13 {% endfor %} 14 </body> 15 </html> 模板標簽 {% for xxx in xxxs %} 可以用來在模板頁面出迭代訪問取出每一個數(shù)據(jù),具體對于不同序列數(shù)據(jù)的訪問我們會在后面詳細為大家介紹, {% empty %} 標簽用來判斷當循環(huán)訪問數(shù)據(jù)為空時要做的事情,最后循環(huán)標簽要有 {% endfor %} 標簽進行結(jié)束。因為HTML中并沒有像Python縮進這樣的方式來控制代碼塊。

    ?

    轉(zhuǎn)載于:https://www.cnblogs.com/onerose/p/10634182.html

    總結(jié)

    以上是生活随笔為你收集整理的惊了!最通俗易懂的Djongo入门竟然在这里!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。