国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Django學習(1):Django項目的初步創(chuàng)建與簡單配置

這篇具有很好參考價值的文章主要介紹了Django學習(1):Django項目的初步創(chuàng)建與簡單配置。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一,創(chuàng)建一個Django項目

1.1 新建虛擬環(huán)境

? ? ? ? 每一個python項目都創(chuàng)建一個新的虛擬環(huán)境有助于我們對于項目與其所對應包的管理等。

這里使用pycharm工具進行操作演示。

? ? ? ? pycharm左上方找到菜單——File——New Project。

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 點擊后彈出新建項目窗口進行配置

  1. Location:項目總路徑,選擇一個空的文件夾。
  2. New environment using:使用什么作為新環(huán)境,選擇Virtualenv虛擬環(huán)境。
  3. New environment using / Location:虛擬環(huán)境文件夾venv所存放的位置,在選擇了總項目Location后會自動選擇的主項目下的venv文件夾,如果沒有自動選擇需要自行修改。
  4. Base Interpreter:選擇到電腦中下載的實際python解釋器
  5. Inherit global site-package:繼承Base Interpreter中的包,建議不要勾選。
  6. Make available to all projects:其他項目也可以進行使用它的虛擬環(huán)境中的解釋器作為Base Interpreter,建議不要勾選。
  7. Create a main.py welcome script:創(chuàng)建一個python簡單腳本文件,建議不要勾選,勾選了進去也可以刪除。

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 點擊create,然后彈出一個新窗口,選擇This Window或New Window都可以。

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 然后我們便完成了即將用于django虛擬環(huán)境的初步創(chuàng)建。

二,Django項目的創(chuàng)建與配置?

2.1 安裝配置Django

2.1.1 安裝模塊

? ? ? ? 打開pycharm終端,輸入安裝命令 pip install django,并回車。出現(xiàn)下列頁面便說明安裝完成。

django 的安裝與配置,Django學習,django,學習,python

2.1.2 新建django項目?

? ? ? ? 此時我們已經(jīng)安裝好了django模塊,接下來就該新建項目了。依舊是在終端中完成,輸入django-admin.exe startproject mysite(項目名稱)并回車,然后可以在項目路徑下看到我們的主項目mysite,里面還有一個mysite包,這是我們的主應用。還有一個manage.py文件,這是我們除了創(chuàng)建django項目外需要使用的可執(zhí)行文件。具體結構如下圖所示。

django 的安裝與配置,Django學習,django,學習,python

  1. ?manage.py:這是一個命令行工具,用于執(zhí)行各種Django管理任務,如創(chuàng)建數(shù)據(jù)庫、運行開發(fā)服務器、創(chuàng)建超級用戶等。你可以使用它來與Django項目進行交互。
  2. myproject/settings.py:這是Django項目的主要設置文件??梢栽谶@里配置數(shù)據(jù)庫連接、應用程序設置、模板設置、國際化等。這是項目的核心配置文件。
  3. myproject/urls.py:這個文件定義了項目的主URL路由,即哪個URL應該由哪個視圖處理。它將URL映射到視圖函數(shù)或類。
  4. myproject/asgi.py:這是用于異步Web服務器的ASGI(Asynchronous Server Gateway Interface)入口文件。它與WebSocket等異步通信協(xié)議一起使用,用于異步應用程序的部署。(起初不需要過多關注)
  5. myproject/wsgi.py:這是用于部署Django應用程序的WSGI(Web Server Gateway Interface)入口文件。它允許你將Django應用程序與Web服務器(如Apache或Nginx)集成。(起初不需要過多關注)
  6. myproject/init.py:這個文件是一個空文件,用于指示Python解釋器將myproject目錄視為Python包。
  7. myproject/static/:這個目錄用于存儲項目中的靜態(tài)文件,如CSS、JavaScript和圖像。這些文件不會被動態(tài)生成,而是直接提供給瀏覽器。
  8. myproject/templates/:這個目錄用于存儲項目的HTML模板文件。這些模板通常包含HTML結構和Django模板標記,用于渲染動態(tài)內(nèi)容。
  9. myproject/apps.py:這個文件定義了Django應用程序的配置,包括應用程序的名稱和其他元數(shù)據(jù)。
  10. myproject/migrations/:這個目錄包含數(shù)據(jù)庫遷移文件。Django使用遷移來管理數(shù)據(jù)庫模式的變化,使你可以輕松地更新數(shù)據(jù)庫結構。
  11. myproject/pycache/:這個目錄包含Python編譯的緩存文件,用于提高導入速度。

????????這些文件和目錄是一個標準的Django項目的基本組成部分,可以根據(jù)項目的需要添加其他文件和目錄。它們共同構建了我們的Web應用程序,提供了項目的配置、路由、模板、靜態(tài)文件等功能。通過編輯這些文件,可以定制和擴展我們的Django應用程序。

2.1.3 settings相關簡單配置

? ? ? ? 作為Django項目的主要設置文件。我們可以在這里配置數(shù)據(jù)庫連接、應用程序設置、模板設置、國際化等。這是項目的核心配置文件。接下來會講解一些比較基礎的配置與講解。

  1. INSTALLED_APPS:應用注冊。當創(chuàng)建一個Django項目時,Django會自動在settings.py文件中生成一個INSTALLED_APPS列表,其中包含了一些默認的應用程序。我們在創(chuàng)建完自己的應用或使用第三方相關應用時都需要在這里進行注冊。
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        # 下方將來會添加自己的應用或第三方模塊應用
    ]
  2. LANGUAGE_CODE:語言配置。

    # LANGUAGE_CODE = 'en-us' 默認語言為英文,改為中文:
    LANGUAGE_CODE = 'zh-hans'
  3. TIME_ZONE:時區(qū)配置。

    # TIME_ZONE = 'UTC' 默認時區(qū)為UTC,
    
    改為中國上海:TIME_ZONE = 'Asia/shanghai'
  4. DATABASES:數(shù)據(jù)庫配置。Django默認自帶使用sqlite3數(shù)據(jù)庫??梢詫?shù)據(jù)庫修改為mysql或其他django支持的數(shù)據(jù)庫類型。

    # 默認的sqlite3數(shù)據(jù)庫
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': BASE_DIR / 'db.sqlite3',
        }
    }
    # 配置為MySQL數(shù)據(jù)庫
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',   
            'NAME': '數(shù)據(jù)庫名字',   
            'USER': '用戶名',
            'PASSWORD': '密碼',  
            'HOST': 主機地址;   
            'PORT': '3306',      
        }
    }
    
  5. ROOT_URLCONF:根路由。指向的也就是我們的項目總路由

    ROOT_URLCONF = 'mysite.urls'
    
  6. DEBUG:調(diào)試設置。當 DEBUG 設置為 True 時,Django 處于調(diào)試模式。在調(diào)試模式下,如果發(fā)生錯誤,Django 會向用戶顯示詳細的錯誤頁面,包括錯誤消息和代碼跟蹤,這有助于開發(fā)人員識別和解決問題。調(diào)試模式還啟用了一些開發(fā)工具和功能,如自動重新加載代碼、數(shù)據(jù)庫查詢?nèi)罩居涗浀?,有助于開發(fā)過程中的快速迭代和故障排除。但是,在生產(chǎn)環(huán)境中,DEBUG 應設置為 False,以提高安全性。在生產(chǎn)環(huán)境中,不應向終端用戶顯示敏感信息,因此詳細的錯誤頁面和調(diào)試信息應該被禁用。

    DEBUG = True
    
  7. ALLOWED_HOST:是一個列表,其中包含允許訪問你的Django應用程序的主機名或IP地址。這是一項重要的安全設置,用于防止跨站請求偽造(CSRF)和其他潛在的安全漏洞。當DEBUG調(diào)試模式為False時,一般將ALLOWED_HOST設置為 ”*“ ,也就是所有地址都可以訪問。

    
    ALLOWED_HOSTS = []
    # 當DEBUG=False時需要這樣設置
    ALLOWED_HOSTS = ["*"]
    
  8. TEMPLATES:模板文件設置。是 Django 項目中用于存儲HTML模板文件的目錄。'APP_DIRS': True,意思為當前模板文件的搜索位置會從應用下方進行查找,這里建議配置'DIRS':[],也就是指定其他查找路徑,可以設置為BASE_DIR / 'templates'這樣就可以在總路徑下創(chuàng)建一個templates模板文件夾并使用。

    # 未配置
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    # 進行配置
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            # BASE_DIR為項目總路徑,templates可以隨便起名,但是建議約定俗成
            'DIRS': [BASE_DIR / 'templates'],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    
    
  9. STATIC_URL:用于指定靜態(tài)文件的基本URL。靜態(tài)文件包括CSS、JavaScript、圖像和其他不需要動態(tài)生成的文件。通過設置STATIC_URL,可以告訴Django如何訪問和提供這些靜態(tài)文件。默認也是從應用下進行查找。
    # 一般不進行修改,但是會配置新的STATICFILES_DIRS
    STATIC_URL = 'static/'
    
  10. STATICFILES_DIR:相當于TEMPLATES模板文件中的'DIRS',通過配置可以使django從項目總路徑下進行查找。

    # 建議在STATIC_URL附近添加
    STATICFILES_DIRS = [BASE_DIR / 'static']
    
  11. MEDIA_URL:用于指定媒體文件的基本URL。媒體文件通常包括用戶上傳的圖像、音頻、視頻等文件。通過設置MEDIA_URL,可以告訴Django如何訪問和提供這些媒體文件。

    # 與STATIC_URL設置基本一樣
    MEDIA_URL = 'media/'
    

注意:某些配置在settings中可能沒有,可以進入下載的django包中找到django的配置進行查看。路徑:venv——Lib——site-packages——django——conf——global_settings.py

2.1.4 數(shù)據(jù)遷移

? ? ? ? 注意接下來的命令都要使用manage.py,所有要先cd到自己的項目目錄下才能進行。在django中,在設計了模型類后,需要先生成遷移文件,然后再遷移到數(shù)據(jù)庫這兩步,而django也自帶了幾個應用,在創(chuàng)建完項目后,可以先同步遷移一下數(shù)據(jù)庫。

? ? ? ? 生成遷移文件命令:python manage.py makemigrations

? ? ? ? 遷移到數(shù)據(jù)庫命令:python manage.py migrate

django已經(jīng)生成了遷移文件,所有此時只需在終端中輸入python manage.py migrate便可以完成遷移。

django 的安裝與配置,Django學習,django,學習,python

????????此時完成遷移后會發(fā)現(xiàn)在項目路徑下多出一個?db.sqlite3數(shù)據(jù)庫文件,這也就是django默認自帶屬于的數(shù)據(jù)庫,此時可以使用數(shù)據(jù)庫可視化工具進行連接,可以發(fā)現(xiàn)里面已經(jīng)存在了django應用自帶的一些表。

django 的安裝與配置,Django學習,django,學習,python

????????而在django-migrations中顯示了django自帶的遷移記錄

?django 的安裝與配置,Django學習,django,學習,python

2.1.5 啟動Django服務?

? ? ? ? 此時完成遷移后,就可以進行Django服務的啟動。依舊是在終端輸入,啟動命令:python manage.py runserver(不指定端口,django會默認啟用8000端口)

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 再點擊http://127.0.0.1:8000/

django 的安裝與配置,Django學習,django,學習,python

????????跳轉到此頁面便是已經(jīng)安裝成功。?

2.2 Django自帶的強大后臺? ? ? ?

2.2.1 Admin總路由

? ? ? ? 我們進入總應用下的urls.py后會發(fā)現(xiàn),在urlpatterns(Django 項目中的一個變量,它定義了項目的 URL 路由映射規(guī)則。具體來說,這是一個列表,其中包含了一系列 URL 路由模式(patterns)以及與這些模式關聯(lián)的視圖函數(shù)或類。)中已經(jīng)存在了一個admin路由(一組內(nèi)置的 URL 路由,用于提供管理員界面(后臺管理)功能。這些路由允許管理員用戶對應用程序中的數(shù)據(jù)進行管理,包括創(chuàng)建、讀取、更新和刪除(CRUD)操作,而無需編寫額外的代碼。),此時我們便可以啟動項目后在路徑后拼接上admin便可以進入。

 

????????但是此時需要賬號密碼才能進入,這是我們就需要創(chuàng)建一個用戶進行登錄后臺,在終端中輸入命令:python manage.py createsuperuser進行創(chuàng)建超級管理員用戶。注冊完成后便可以登錄進入后臺。

django 的安裝與配置,Django學習,django,學習,python

?????????此時使用賬號密碼登錄后臺。

django 的安裝與配置,Django學習,django,學習,python

????????此時便進入了django的后臺管理 。Django 的 admin 后臺是一個內(nèi)置的管理界面,用于管理和維護?Django 應用程序的數(shù)據(jù)。我們在創(chuàng)建了自己的應用,然后編寫完我們數(shù)據(jù)模型后也可以通過admin.py將自己的數(shù)據(jù)模型注冊到后臺并進行操作與管理。admin后臺主要功能包括:

  1. 數(shù)據(jù)庫管理: 可以在 admin 后臺中管理應用程序的數(shù)據(jù)模型,查看、添加、編輯和刪除數(shù)據(jù)庫記錄。這包括對數(shù)據(jù)摩西模型(例如用戶、文章、評論、產(chǎn)品等)執(zhí)行基本的 CRUD(創(chuàng)建、讀取、更新、刪除)操作。
  2. 用戶和權限管理: admin 后臺允許管理用戶,包括創(chuàng)建和編輯用戶帳戶、設置用戶權限、重置密碼等??梢詣?chuàng)建超級用戶,并且可以訪問 admin 后臺以執(zhí)行高級管理任務。
  3. 可自定義性: 可以自定義 admin 后臺的外觀和行為??梢蕴砑幼远x視圖、自定義模型管理器、自定義表單等,以適應項目需求。這樣可以擴展 admin 后臺的功能,使其滿足項目的具體要求。
  4. 日志和歷史記錄: admin 后臺記錄了對數(shù)據(jù)庫的所有更改,包括添加、編輯和刪除記錄的操作。這有助于審計和追蹤數(shù)據(jù)變更。
  5. 多語言支持: admin 后臺支持多語言,允許創(chuàng)建多語言管理界面,以便多語言團隊協(xié)作。
  6. 快速開發(fā)和原型設計: admin 后臺提供了一個快速原型設計應用程序的方式。在初期開發(fā)階段,可以使用 admin 后臺來快速添加和管理數(shù)據(jù),而不必為前端界面編寫代碼。
  7. 安全性: admin 后臺是有權限控制的,只有經(jīng)過身份驗證的管理員用戶才能訪問它。可以設置用戶權限以限制其他用戶的操作,以確保安全性。

總之,Django 的 admin 后臺是一個強大的工具,用于簡化管理應用程序的數(shù)據(jù)和用戶。它使開發(fā)人員能夠快速查看和操作數(shù)據(jù)庫記錄,同時提供了可自定義性以適應不同項目的需求。這使得開發(fā)、測試和維護 Django 應用程序變得更加便捷和高效。

2.2.2 數(shù)據(jù)庫與后臺的對應

? ? ? ? 其實在數(shù)據(jù)庫中,我們也可以找到數(shù)據(jù)庫與后臺之間的對應關系,比如我們在創(chuàng)建了一個用戶后,就可以在auth_user表中找到我們創(chuàng)建的對應用戶信息,也可以在后臺進行修改等操作。

django 的安裝與配置,Django學習,django,學習,pythondjango 的安裝與配置,Django學習,django,學習,python

三,創(chuàng)建應用

3.1 自己的應用

? ? ? ? 我們在上方一直在講解創(chuàng)建項目時自帶的主應用,接下來我們就要開始創(chuàng)建自己的應用了。

3.1.1 應用的創(chuàng)建

? ? ? ? 首先,還是在命令行輸入命令:python manage.py startapp news(應用名),然后回車。然后便可以看到項目路徑下多了一個名為news的應用。總結構如下:

django 的安裝與配置,Django學習,django,學習,python

  1. 應用目錄(例如,myapp/): 這是自定義應用程序的根目錄,包含了該應用程序的所有文件和子目錄。
  2. myapp/__init__.py: 這是一個空文件,用于告訴 Python 解釋器將 myapp 目錄視為一個 Python 包。
  3. myapp/admin.py: 在這個文件中,你可以注冊模型以在 Django 的 admin 后臺中進行管理。通過在這里添加適當?shù)拇a,可以控制哪些模型可以在 admin 后臺中編輯、查看和刪除。
  4. myapp/apps.py: 這個文件包含有關應用程序的元數(shù)據(jù),如應用程序的名稱和配置。通常,不需要修改此文件,除非需要自定義應用程序的配置。
  5. myapp/models.py: 在這個文件中,可以定義應用程序的數(shù)據(jù)模型(數(shù)據(jù)庫表)。使用 Django 的模型類來創(chuàng)建數(shù)據(jù)庫表,以及字段來定義表的結構。這是自己創(chuàng)建的應用程序中最重要的文件之一,因為它定義了數(shù)據(jù)的結構。
  6. myapp/views.py: 這個文件包含了應用程序的視圖函數(shù)或類。視圖定義了如何處理來自客戶端的請求并返回響應??梢栽谶@里編寫業(yè)務邏輯,將請求與模型交互,并渲染模板來生成響應。
  7. myapp/tests.py: 在這個文件中,可以編寫測試用例來測試應用程序。Django 提供了內(nèi)置的測試框架,可以幫助編寫和運行測試。
  8. myapp/templates/: 這個目錄用于存儲應用程序的 HTML 模板文件。模板文件包含了應用程序的頁面結構和顯示邏輯。Django 使用模板引擎來渲染這些模板,生成最終的 HTML 響應。
  9. myapp/static/: 這個目錄用于存儲應用程序的靜態(tài)文件,如 CSS、JavaScript 和圖像。這些文件不會被動態(tài)生成,而是直接提供給瀏覽器。
  10. myapp/urls/:這個文件剛創(chuàng)建還沒有,但是可以一般來說每一個自己創(chuàng)建的應用下都會創(chuàng)建一個urls來保存本應用的路由,然后最后使用include()函數(shù)連接到總路由。
  11. myapp/migrations/:應用下的 migrations 包包含了數(shù)據(jù)庫遷移文件,用于管理應用程序的數(shù)據(jù)模型(數(shù)據(jù)庫表結構)的變化。每當更改數(shù)據(jù)模型(例如,添加新字段、修改字段類型、刪除字段等),Django 就會生成一個新的遷移文件,以記錄這些變化。這些遷移文件存儲在應用程序的 migrations 包中。

3.1.2 應用的注冊

? ? ? ? 在創(chuàng)建完自己應用的第一步,就是在總應用的settings中進行注冊。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 下方將來會添加自己的應用或第三方模塊應用
    # 將剛才創(chuàng)建的應用進行注冊
    'news',
]

3.2 路由的創(chuàng)建

3.2.1 加入路由

????????在總路由中加入自己的應用路由并在自己應用下創(chuàng)建一個路由文件:urls.py

from django.contrib import admin
# 導入include
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 加入自己應用的路由,兩種方法都可以,第二個是命名空間寫法
    #,可以在后續(xù)使路由,視圖函數(shù)與模板文件路徑設置更加簡便,這里先默認使用第一種
    # 注意include的第一個參數(shù)約定俗成就是自己應用下的urls,然后在自己應用下進行新建urls.py文件
    path('news/', include("news.urls")),
    # path('news/', include("news.urls", namespace="news"))
]

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 在自己應用下的urls中寫入自己的路由。這里第一個視圖命名為index,切記視圖名后必須有“/”,也可以不填寫視圖名”index/“,這樣進入應用路由后會自動進入index視圖函數(shù)。

from django.urls import path, include
# 默認在views中進行編寫視圖函數(shù)
from .views import *
urlpatterns = [
    # 本應用下的路由,第一個參數(shù)是路由名,第二個參數(shù)是視圖函數(shù)名,也可以有第三個參數(shù),
    # 也就是命名空間,name=index(一般三個都與視圖函數(shù)名一致)
    path("index/", index)
    path("index/", index, name="index")

]

3.2.2 編寫視圖函數(shù)

????????接下來就可以到 應用下的views中進行編寫視圖函數(shù).這里面HttpResponse是一個用于測試的視圖常用函,每一個視圖函數(shù)都必須有一個形參名為request,在后面會有大用。

# 先導入HttpResponse進行測試
from django.shortcuts import render,HttpResponse

# Create your views here.
def index(request):
    # 這里返回使用HttpResponse進行測試(只能輸出一句話)
    return HttpResponse("歡迎來到首頁")

3.2.3 測試結果

? ? ? ? 然后便可以啟動服務,進入網(wǎng)站后發(fā)現(xiàn)已經(jīng)不是啟動成功,而是page not found,也就是404畫面

django 的安裝與配置,Django學習,django,學習,python

?????????可以看到這里由于我們設置了debug=True,所以會有下面都有哪些視圖的提醒,在后面拼接news/再回車

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 這里可以看到news/后還有一個index/視圖,也就是我們剛才在應用下加入的視圖和剛才編寫的index視圖函數(shù),再在后面拼接上index/,再次回車

django 的安裝與配置,Django學習,django,學習,python

? ? ? ? 此時便可以看到,我們剛才編寫的index函數(shù)中的HttpResponse的返回結果。 當然使用HttpResponse這只是作為測試,后續(xù)在開發(fā)中用的多的還是render()函數(shù)

3.3 模型的創(chuàng)建

3.3.1 編寫模型類

? ? ? ??在我們自己創(chuàng)建的應用程序的 models.py 文件中,可以定義應用程序的數(shù)據(jù)模型,這些數(shù)據(jù)模型將映射到數(shù)據(jù)庫表。數(shù)據(jù)模型定義了表的結構以及表中的字段。每個模型類通常都是一個 Python 類,它繼承自 Django 的 models.Model 類,并定義了模型的字段和屬性。接下來是一個簡單的模型類的創(chuàng)建。

from django.db import models


# Create your models here.
# 創(chuàng)建我們新聞中的第一個類:新聞種類Category,繼承models.Model
class Category(models.Model):
    # 類屬性,通常需要寫入到類的初始化init方法中的,在這里因為繼承了models.Model,可以直接進行編寫
    # 使用的CharField字段也就對應著數(shù)據(jù)庫中的varchar等字段
    # max_length最大長度必須要指明,verbose_name是在網(wǎng)站上的展示名,可選
    name = models.CharField(max_length=20, verbose_name="新聞種類")
    # __str__方法定義了模型的字符串表示,通常在在管理界面中顯示模型的對象時使用。
    def __str__(self):
        return self.name

# 創(chuàng)建我們新聞中的第二個類:新聞News,同樣繼承models.Model
class News(models.Model):
    # 新聞標題,同樣使用CharField字段,這里由于不能重復,需要使用unique唯一約束
    title = models.CharField(max_length=10, verbose_name="標題", unique=True)
    # 新聞正文,這里使用長文本,未來在使用第三方富文本插件后可以進行更改
    content = models.TextField(verbose_name="新聞正文")
    # 時間,使用DateTimeField字段,auto_now_add=True可以自動添加新聞添加時的時間,不用手動添加
    time = models.DateTimeField(auto_now_add=True, verbose_name="時間")
    # 新聞種類,聯(lián)系到Category表,所以使用ForeignKey外鍵,on_delete=models.CASCADE為級聯(lián)刪除
    category = models.ForeignKey(to="Category", on_delete=models.CASCADE)

????????還有很多其他字段和參數(shù),包括第三方可以使用的富文本插件等等,在后續(xù)會做詳細解釋。?

3.3.2 生成遷移文件

? ? ? ? 每次在定義完模型類后,還需要同步到數(shù)據(jù)庫,這時需要先生成遷移文件,命令同上,為:python manage.py makemigrations,輸入完后按下回車,會發(fā)現(xiàn)提醒生成了兩張表(一個模型類就對應了一張表)和一個遷移文件

django 的安裝與配置,Django學習,django,學習,python
?

? ? ? ? 我們再進入應用下的migrations包中,會發(fā)現(xiàn)多了一個0001_initial.py文件,這就是我們的第一個遷移文件。

django 的安裝與配置,Django學習,django,學習,python

3.3.3 遷移到數(shù)據(jù)庫?

? ? ? ? 我們剛才只是生成了遷移文件,還沒有同步到數(shù)據(jù)庫,這里需要再次遷移,才能將模型類同步到數(shù)據(jù)庫中,生成對應的表。命令為:python manage.py migrate。在命令行輸入后按下回車。然后會顯示遷移完成。

django 的安裝與配置,Django學習,django,學習,python

????????再次打開數(shù)據(jù)庫查看。 發(fā)現(xiàn)會多出剛才創(chuàng)建的兩個新表。

django 的安裝與配置,Django學習,django,學習,python

3.3.4 修改字段或創(chuàng)建新的模型類

????????需要注意,我們每次在models.py中增加新的模型類或者修改其中字段時都需要重新生成遷移文件并向數(shù)據(jù)庫進行重新遷移,但是如果是修改類似于verbose_name或類的__str__字符串表示,是不需要重新生成遷移的。這里將會展示增加新的字段或新的模型類(新表)時遇到的問題。

增加新的模型類

? ? ? ??在models.py中加入一個測試模型類:

# 用于測試的模型類
class Test(models.Model):
    test = models.CharField(max_length=10)

? ? ? ??然后需要重新生成遷移文件:python manage.py makemigrations。然后會發(fā)現(xiàn)在migrations中多出一個遷移文件。

? ? ? ? 再次遷移到數(shù)據(jù)庫:python manage.py migrate。此時便同步到了數(shù)據(jù)庫中。同步成功如下:django 的安裝與配置,Django學習,django,學習,python

向已存在的表中增加新的字段

? ? ? ??向剛才的test模型類中再次添加新的字段

# 用于測試的模型類
class Test(models.Model):
    test = models.CharField(max_length=10)
    # 測試字段
    test2 = models.CharField(max_length=20)

? ? ? ? ?再次生成遷移文件:python manage.py makemigrations。此時會發(fā)現(xiàn),提示報錯說缺少一個默認值。

django 的安裝與配置,Django學習,django,學習,python

????????

????????這個錯誤消息是由于嘗試向數(shù)據(jù)庫表中添加一個非空字段而沒有指定默認值,但是已經(jīng)存在的行需要一個默認值以進行填充。Django 提供了兩種選項來解決這個問題,可以根據(jù)需求選擇其中一種:

1,提供一個一次性默認值(Provide a one-off default now): 如果希望添加的新字段有一個默認值,并且希望將這個默認值應用于已存在的數(shù)據(jù)庫記錄,可以選擇這個選項。Django 將要求我們輸入默認值,然后將此默認值應用于所有現(xiàn)有的記錄。

2,手動在 models.py 中定義默認值(Quit and manually define a default value in models.py): 如果希望在模型的字段定義中明確指定默認值,而不是在遷移過程中提供一次性默認值,可以選擇這個選項。這意味著需要返回到你的模型類(models.py)中,為新字段指定一個默認值,然后再次運行 makemigrations 命令生成遷移文件。

????????這里建議都選擇第二個選項。

  1. 按下選項二
  2. 回到models.py中找到剛才添加的字段,加入default默認值參數(shù)
    # 用于測試的模型類
    class Test(models.Model):
        test = models.CharField(max_length=10)
        # 測試字段
        test2 = models.CharField(max_length=20, default="默認")
  3. 重新生成遷移文件,應該沒有再報錯
  4. 重新遷移,也沒有報錯

django 的安裝與配置,Django學習,django,學習,python

????????當然這里再介紹兩個好用但是不太推薦的方法,在項目應用創(chuàng)建的初期,可以使用,但是數(shù)據(jù)多了之后建議使用Git等版本控制軟件?

直接刪除所有遷移文件和數(shù)據(jù)庫

? ? ? ? 這是最簡單粗暴的一種方法,先刪除我們應用下migrations中的所有遷移文件和sqlite3數(shù)據(jù)庫(如果使用的MySQL等在MySQL中進行操作):django 的安裝與配置,Django學習,django,學習,pythondjango 的安裝與配置,Django學習,django,學習,python

在刪除成功后,重新生成遷移文件:?python manage.py makemigrations

然后重新進行遷移:python manage.py migrate

此時便相當于直接初始化重新生成了數(shù)據(jù)庫與數(shù)據(jù)庫中的表

刪除遷移文件,遷移記錄和表

? ? ? ? 這一種方法不會刪除數(shù)據(jù)庫,但是要更加麻煩一些

刪除遷移文件,數(shù)據(jù)庫中的遷移記錄(在數(shù)據(jù)庫中的django_migrations表中,需要注意這里由于剛才同步將django自帶應用和我們的應用一起進行了遷移,所有這里需要小心不要刪除django自帶的遷移記錄,需要找到自己的應用的遷移記錄)和數(shù)據(jù)庫中我們應用的數(shù)據(jù)表

django 的安裝與配置,Django學習,django,學習,pythondjango 的安裝與配置,Django學習,django,學習,python

  1. 重新生成遷移文件:python manage.py makemigrations
  2. 重新遷移:python manage.py migrate

四,命令講解

4.1 django-admin

  • django-admin 是全局安裝的 Django 命令行工具,它可以在任何地方運行,不僅限于項目的根目錄。
  • 可以使用 django-admin 來創(chuàng)建新的 Django 項目,執(zhí)行與 Django 項目無關的任務,以及在不同的項目之間切換。
  • 例如,可以使用 django-admin startproject projectname 來創(chuàng)建一個新的 Django 項目,而無需在項目目錄中使用 manage.py。

4.2 manage.py

  • manage.py 是每個 Django 項目根目錄中的腳本,它是由 Django 自動生成的。
  • manage.py 是用于管理特定 Django 項目的命令行工具。它提供了一種在項目內(nèi)部執(zhí)行管理任務的方式。
  • 可以使用 manage.py 來執(zhí)行數(shù)據(jù)庫遷移、運行開發(fā)服務器、創(chuàng)建超級用戶、執(zhí)行測試、收集靜態(tài)文件等與項目相關的任務。

????????python manage.py 回車:可以查看 manage.py 后續(xù)相關命令或參數(shù)

????????python manage.py help:這將列出 manage.py 支持的所有命令以及它們的描述。這個命令將幫助了解可用的 Django 管理命令以及如何使用它們。

????????python manage.py help <command>:其中 <command> 是你想要獲取幫助的特定命令的名稱。這將顯示有關該命令的詳細信息,包括用法、選項和參數(shù)。

????????總的來說,django-admin 是全局工具,而 manage.py 是特定于每個 Django 項目的工具。通常情況下,會在項目的根目錄中使用 manage.py 來執(zhí)行項目管理任務。如果需要執(zhí)行與項目無關的全局任務(例如創(chuàng)建新項目),則可以使用 django-admin。

總結

????????在下一篇中會講解進一步的路由,視圖與后臺操作等,涉及Django的命令也會在后續(xù)編寫一個常用命令總結。

Django官方網(wǎng)址

? ? ? ?Getting started with Django | Djangohttps://www.djangoproject.com/start/

Django官方文檔

? ? ? ? 此處為4.2版本

? ? ? ?https://docs.djangoproject.com/en/4.2/https://docs.djangoproject.com/en/4.2/

?

? ? ? ??文章來源地址http://www.zghlxwxcb.cn/news/detail-856033.html

到了這里,關于Django學習(1):Django項目的初步創(chuàng)建與簡單配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 《Django項目》day1--配置docker、git、項目的創(chuàng)建

    《Django項目》day1--配置docker、git、項目的創(chuàng)建

    docker安裝教程:安裝docker 我自己是租了一個阿里云的服務器,學生買很便宜;在阿里云上租好的服務器默認登上去是root賬戶,我們可以先給自己創(chuàng)建一個賬戶并分配sudo權限: 區(qū)分重點: 我們所租的云服務器屬于第二層,第一層是VMware下的終端,我們以后所管理的項目都應

    2024年03月14日
    瀏覽(81)
  • Django學習筆記:第二章django的安裝和創(chuàng)建應用

    終端運行 查看django是否安裝成功 在控制臺運行 在特定文件夾內(nèi)打開終端運行 生成 進入上圖的Scripts文件夾內(nèi),打開終端 先正常安裝VSCode 再安裝python插件 安裝Django插件,搜索django,安裝前兩個 特點 功能完善,開發(fā)速度快,安全性強 有完善的在線文檔 模型自帶數(shù)據(jù)庫ORM組件

    2024年02月16日
    瀏覽(51)
  • Django框架入門到精通(04)Django創(chuàng)建第一個項目 (黃菊華老師大學生畢業(yè)設計學習教程)

    Django框架入門到精通(04)Django創(chuàng)建第一個項目 (黃菊華老師大學生畢業(yè)設計學習教程)

    博主介紹: 《Vue.js入門與商城開發(fā)實戰(zhàn)》《微信小程序商城開發(fā)》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業(yè)設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程,免費 項目配有對應開發(fā)文檔、開題報告、任務書、PPT、論文模版

    2024年02月06日
    瀏覽(29)
  • Django的數(shù)據(jù)庫配置、生成(創(chuàng)建)過程、寫入數(shù)據(jù)、查看數(shù)據(jù)的學習過程記錄

    Django的數(shù)據(jù)庫配置、生成(創(chuàng)建)過程、寫入數(shù)據(jù)、查看數(shù)據(jù)的學習過程記錄

    在文件:\\\"E:Python_projectP_001myshop-testmyshopmyshopsettings.py\\\"中寫入以下數(shù)據(jù)庫的配置信息: 上面的代碼比較好理解,就是對于語句: django.db.backends.mysql 作一些說明: 在Django中, \\\'django.db.backends.mysql\\\' 是一個數(shù)據(jù)庫后端引擎的路徑,用于指定使用MySQL作為數(shù)據(jù)庫的后端。數(shù)據(jù)庫后

    2024年02月12日
    瀏覽(98)
  • django——創(chuàng)建 Django 項目和 APP

    django——創(chuàng)建 Django 項目和 APP

    命令 : 創(chuàng)建Django項目 django-admin startproject name 創(chuàng)建子應用 python manager.py startapp name 2.1 創(chuàng)建工程 在使用Flask框架時,項目工程目錄的組織與創(chuàng)建是需要我們自己手動創(chuàng)建完成的。 在django中,項目工程目錄可以借助django提供的命令幫助我們創(chuàng)建。 2.1.1 創(chuàng)建 創(chuàng)建工程的命令為:

    2024年02月12日
    瀏覽(23)
  • 從零開始的Django框架入門到實戰(zhàn)教程(內(nèi)含實戰(zhàn)實例) - 01 創(chuàng)建項目與app、加入靜態(tài)文件、模板語法介紹(學習筆記)

    從零開始的Django框架入門到實戰(zhàn)教程(內(nèi)含實戰(zhàn)實例) - 01 創(chuàng)建項目與app、加入靜態(tài)文件、模板語法介紹(學習筆記)

    ??Django是目前比較火爆的框架,之前有在知乎刷到,很多畢業(yè)生進入大廠實習后因為不會git和Django框架3天就被踢掉了,因為他們很難把自己的工作融入到整個組的工作中。因此,我嘗試自學Django并整理出如下筆記。 ??在這部分,我將從Django的安裝講起,從創(chuàng)建項目到制

    2024年02月09日
    瀏覽(28)
  • Django 初級指南:創(chuàng)建你的第一個 Django 項目

    Django 是一個強大的 Python Web 框架,它采用了“模型-視圖-控制器”(MVC)的設計模式,能夠幫助開發(fā)者快速、簡潔地創(chuàng)建高質(zhì)量的 Web 應用。這篇文章將引導你創(chuàng)建你的第一個 Django 項目。 首先,你需要在你的 Python 環(huán)境中安裝 Django。你可以使用 pip 包管理器來安裝: 你可以

    2024年02月13日
    瀏覽(84)
  • python - Django創(chuàng)建項目

    根目錄下運行命令: ?? python manage.py runserver 直接使用 Pycharm 創(chuàng)建項目 django-admin startproject mysite ? ??這樣就會在當前目錄下創(chuàng)建一個叫做 mysite 的Django項目。 ? ??可以看到Django自動幫我們創(chuàng)建了一個mysite文件夾,這是項目的根目錄。在mysite根目錄中,又有一個mysite目錄,

    2024年04月11日
    瀏覽(22)
  • Django項目創(chuàng)建

    Django項目創(chuàng)建

    @ 目錄 Django項目創(chuàng)建 ?????方式一:終端命令行方式 ?????方式二:Pycharm創(chuàng)建 1??cmd打開終端,切換到指定目錄下 執(zhí)行:django-admin startproject mysite 【mysite 為項目名】,創(chuàng)建成功之后,出現(xiàn)如下: 2??在項目根目錄下【也就是manage.py所在目錄下】,運行python manage.py

    2024年02月16日
    瀏覽(25)
  • python 創(chuàng)建Django項目基礎

    python 創(chuàng)建Django項目基礎

    等待項目安裝完畢 創(chuàng)建好Django項目后,我們就可以運行了 使用命令 在創(chuàng)建的文件中寫入以下方法 注意:request用來接收url的必須要有 測試訪問 1. 創(chuàng)建一個文件夾 templates,如果有則不需要建 2. 創(chuàng)建一個html文件 3.在views添加方法,讓其訪問這個html 4. 添加路由 訪問: 這里,基

    2024年02月08日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包