最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2023年09月13日 10:50:32   作者:色厲膽薄李富貴兒  
本文主要介紹了Django項目的初步創(chuàng)建與簡單配置,詳細介紹了如何安裝和配置Django,包括創(chuàng)建項目、數據庫配置、路由等,通過本文可以了解如何使用Django創(chuàng)建自己的Web應用程序

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

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

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

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

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

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

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

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

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

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

2.1 安裝配置Django

2.1.1 安裝模塊

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

2.1.2 新建django項目 

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

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

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

2.1.3 settings相關簡單配置

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

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',
    # 下方將來會添加自己的應用或第三方模塊應用
]

LANGUAGE_CODE:語言配置。

# LANGUAGE_CODE = 'en-us' 默認語言為英文,改為中文:
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE:時區(qū)配置。

# TIME_ZONE = 'UTC' 默認時區(qū)為UTC,
改為中國上海:TIME_ZONE = 'Asia/shanghai'

DATABASES:數據庫配置。Django默認自帶使用sqlite3數據庫??梢詫祿煨薷臑閙ysql或其他django支持的數據庫類型。

# 默認的sqlite3數據庫
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}
# 配置為MySQL數據庫
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   
        'NAME': '數據庫名字',   
        'USER': '用戶名',
        'PASSWORD': '密碼',  
        'HOST': 主機地址;   
        'PORT': '3306',      
    }
}

ROOT_URLCONF:根路由。指向的也就是我們的項目總路由

ROOT_URLCONF = 'mysite.urls'

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

DEBUG = True

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

ALLOWED_HOSTS = []
# 當DEBUG=False時需要這樣設置
ALLOWED_HOSTS = ["*"]

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',
            ],
        },
    },
]
 

STATIC_URL:用于指定靜態(tài)文件的基本URL。靜態(tài)文件包括CSS、JavaScript、圖像和其他不需要動態(tài)生成的文件。通過設置STATIC_URL,可以告訴Django如何訪問和提供這些靜態(tài)文件。默認也是從應用下進行查找。 

# 一般不進行修改,但是會配置新的STATICFILES_DIRS
STATIC_URL = 'static/'

STATICFILES_DIR:相當于TEMPLATES模板文件中的'DIRS',通過配置可以使django從項目總路徑下進行查找。

# 建議在STATIC_URL附近添加
STATICFILES_DIRS = [BASE_DIR / 'static']

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 數據遷移

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

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

遷移到數據庫命令:python manage.py migrate

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

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

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

2.1.5 啟動Django服務 

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

再點擊http://127.0.0.1:8000/

跳轉到此頁面便是已經安裝成功。 

2.2 Django自帶的強大后臺

2.2.1 Admin總路由

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

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

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

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

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

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

2.2.2 數據庫與后臺的對應

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

三,創(chuàng)建應用

3.1 自己的應用

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

3.1.1 應用的創(chuàng)建

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

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

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

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

3.2.2 編寫視圖函數

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

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

3.2.3 測試結果

然后便可以啟動服務,進入網站后發(fā)現已經不是啟動成功,而是page not found,也就是404畫面

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

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

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

3.3 模型的創(chuàng)建

3.3.1 編寫模型類

在我們自己創(chuàng)建的應用程序的 models.py 文件中,可以定義應用程序的數據模型,這些數據模型將映射到數據庫表。數據模型定義了表的結構以及表中的字段。每個模型類通常都是一個 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字段也就對應著數據庫中的varchar等字段
    # max_length最大長度必須要指明,verbose_name是在網站上的展示名,可選
    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="時間")
    # 新聞種類,聯系到Category表,所以使用ForeignKey外鍵,on_delete=models.CASCADE為級聯刪除
    category = models.ForeignKey(to="Category", on_delete=models.CASCADE)

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

3.3.2 生成遷移文件

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

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

3.3.3 遷移到數據庫 

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

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

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

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

增加新的模型類

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

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

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

再次遷移到數據庫:python manage.py migrate。此時便同步到了數據庫中。同步成功如下:

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

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

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

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

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

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

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

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

按下選項二

回到models.py中找到剛才添加的字段,加入default默認值參數

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

重新生成遷移文件,應該沒有再報錯

重新遷移,也沒有報錯

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

直接刪除所有遷移文件和數據庫

這是最簡單粗暴的一種方法,先刪除我們應用下migrations中的所有遷移文件和sqlite3數據庫(如果使用的MySQL等在MySQL中進行操作):

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

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

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

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

這一種方法不會刪除數據庫,但是要更加麻煩一些

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

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

重新遷移: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 項目的命令行工具。它提供了一種在項目內部執(zhí)行管理任務的方式。
  • 可以使用 manage.py 來執(zhí)行數據庫遷移、運行開發(fā)服務器、創(chuàng)建超級用戶、執(zhí)行測試、收集靜態(tài)文件等與項目相關的任務。
    • python manage.py 回車:可以查看 manage.py 后續(xù)相關命令或參數
    • python manage.py help:這將列出 manage.py 支持的所有命令以及它們的描述。這個命令將幫助了解可用的 Django 管理命令以及如何使用它們。
    • python manage.py help <command>:其中 <command> 是你想要獲取幫助的特定命令的名稱。這將顯示有關該命令的詳細信息,包括用法、選項和參數。

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

總結

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

Django官方網址

 Getting started with Django | Django

Django官方文檔

此處為4.2版本 https://docs.djangoproject.com/en/4.2/???????

到此這篇關于Django項目的初步創(chuàng)建與簡單配置的文章就介紹到這了,更多相關Django 創(chuàng)建與配置內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python如何禁用print輸出

    python如何禁用print輸出

    這篇文章主要介紹了python如何禁用print輸出問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 關于Python中Math庫的使用

    關于Python中Math庫的使用

    這篇文章主要介紹了關于Python中Math庫的使用,math?庫是?Python?提供的內置數學類函數庫,因為復數類型常用于科學計算,需要的朋友可以參考下
    2023-04-04
  • 基于PyQT5制作英雄聯盟全皮膚下載器

    基于PyQT5制作英雄聯盟全皮膚下載器

    這篇文章主要介紹了基于PyQt5制作的簡易英雄聯盟全皮膚下載器,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起動手嘗試一下
    2022-02-02
  • Python使用pyforms實現輕松構建GUI

    Python使用pyforms實現輕松構建GUI

    pyforms是一個基于Python的GUI框架,它提供了一種簡單而強大的方式來構建圖形用戶界面,本文將介紹pyforms的使用場景、優(yōu)勢以及常用的Python代碼案例,需要的小伙伴可以了解下
    2024-01-01
  • Python無法用requests獲取網頁源碼的解決方法

    Python無法用requests獲取網頁源碼的解決方法

    爬蟲獲取信息,很多時候是需要從網頁源碼中獲取鏈接信息的,下面這篇文章主要給大家介紹了關于Python無法用requests獲取網頁源碼的解決方法,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • python監(jiān)控nginx端口和進程狀態(tài)

    python監(jiān)控nginx端口和進程狀態(tài)

    這篇文章主要為大家詳細介紹了python監(jiān)控nginx端口和進程狀態(tài),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解如何使用Python隱藏圖像中的數據

    詳解如何使用Python隱藏圖像中的數據

    隱寫術是在任何文件中隱藏秘密數據的藝術。隱寫術的主要目的是隱藏任何文件中的預期信息,而不實際改變文件的外觀,即文件外觀看起來和以前一樣。本文將利用Python實現隱藏圖像中的數據,需要的可以參考一下
    2022-02-02
  • python2利用wxpython生成投影界面工具的圖文詳解

    python2利用wxpython生成投影界面工具的圖文詳解

    這篇文章主要介紹了python2利用wxpython生成投影界面工具的圖文詳解,本文通過實例圖文相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • conda與jupyter notebook kernel核環(huán)境不一致的問題解決

    conda與jupyter notebook kernel核環(huán)境不一致的問題解決

    本文記錄在使用conda時候出現的問題,jupter notebook中的環(huán)境不一致導致的,具有一定的參考價值,感興趣的可以了解一下
    2023-05-05
  • Python實現12306自動搶火車票功能

    Python實現12306自動搶火車票功能

    一到國慶、春節(jié)這種長假,搶火車票就非常困難?各大互聯網公司都推出搶票服務,只要加錢給服務費就可以增加搶到票的幾率。本文將和你一起探索搶票軟件背后的原理。
    2021-12-12

最新評論

安乡县| 枣阳市| 宁晋县| 离岛区| 新宁县| 旅游| 曲周县| 潢川县| 信丰县| 赞皇县| 津南区| 易门县| 古蔺县| 巨野县| 汝州市| 长寿区| 南靖县| 洛宁县| 合肥市| 阳西县| 甘南县| 湾仔区| 五大连池市| 大洼县| 新巴尔虎右旗| 博乐市| 霍林郭勒市| 贵溪市| 芜湖县| 垦利县| 阿坝| 贵州省| 遵义县| 沂南县| 奎屯市| 枣强县| 黑水县| 樟树市| 华宁县| 塔河县| 武穴市|