Django学习(1):Django项目的初步创建与简单配置
作者:mmseoamin日期:2024-04-27

一,创建一个Django项目

1.1 新建虚拟环境

        每一个python项目都创建一个新的虚拟环境有助于我们对于项目与其所对应包的管理等。

这里使用pycharm工具进行操作演示。

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

Django学习(1):Django项目的初步创建与简单配置,第1张

        点击后弹出新建项目窗口进行配置

  1. Location:项目总路径,选择一个空的文件夹。
  2. New environment using:使用什么作为新环境,选择Virtualenv虚拟环境。
  3. New environment using / Location:虚拟环境文件夹venv所存放的位置,在选择了总项目Location后会自动选择的主项目下的venv文件夹,如果没有自动选择需要自行修改。
  4. Base Interpreter:选择到电脑中下载的实际python解释器
  5. Inherit global site-package:继承Base Interpreter中的包,建议不要勾选。
  6. Make available to all projects:其他项目也可以进行使用它的虚拟环境中的解释器作为Base Interpreter,建议不要勾选。
  7. Create a main.py welcome script:创建一个python简单脚本文件,建议不要勾选,勾选了进去也可以删除。

Django学习(1):Django项目的初步创建与简单配置,第2张

        点击create,然后弹出一个新窗口,选择This Window或New Window都可以。

Django学习(1):Django项目的初步创建与简单配置,第3张

        然后我们便完成了即将用于django虚拟环境的初步创建。

二,Django项目的创建与配置 

2.1 安装配置Django

2.1.1 安装模块

        打开pycharm终端,输入安装命令 pip install django,并回车。出现下列页面便说明安装完成。

Django学习(1):Django项目的初步创建与简单配置,第4张

2.1.2 新建django项目 

        此时我们已经安装好了django模块,接下来就该新建项目了。依旧是在终端中完成,输入django-admin.exe startproject mysite(项目名称)并回车,然后可以在项目路径下看到我们的主项目mysite,里面还有一个mysite包,这是我们的主应用。还有一个manage.py文件,这是我们除了创建django项目外需要使用的可执行文件。具体结构如下图所示。

Django学习(1):Django项目的初步创建与简单配置,第5张

  1.  manage.py:这是一个命令行工具,用于执行各种Django管理任务,如创建数据库、运行开发服务器、创建超级用户等。你可以使用它来与Django项目进行交互。
  2. myproject/settings.py:这是Django项目的主要设置文件。可以在这里配置数据库连接、应用程序设置、模板设置、国际化等。这是项目的核心配置文件。
  3. myproject/urls.py:这个文件定义了项目的主URL路由,即哪个URL应该由哪个视图处理。它将URL映射到视图函数或类。
  4. myproject/asgi.py:这是用于异步Web服务器的ASGI(Asynchronous Server Gateway Interface)入口文件。它与WebSocket等异步通信协议一起使用,用于异步应用程序的部署。(起初不需要过多关注)
  5. myproject/wsgi.py:这是用于部署Django应用程序的WSGI(Web Server Gateway Interface)入口文件。它允许你将Django应用程序与Web服务器(如Apache或Nginx)集成。(起初不需要过多关注)
  6. myproject/init.py:这个文件是一个空文件,用于指示Python解释器将myproject目录视为Python包。
  7. myproject/static/:这个目录用于存储项目中的静态文件,如CSS、JavaScript和图像。这些文件不会被动态生成,而是直接提供给浏览器。
  8. myproject/templates/:这个目录用于存储项目的HTML模板文件。这些模板通常包含HTML结构和Django模板标记,用于渲染动态内容。
  9. myproject/apps.py:这个文件定义了Django应用程序的配置,包括应用程序的名称和其他元数据。
  10. myproject/migrations/:这个目录包含数据库迁移文件。Django使用迁移来管理数据库模式的变化,使你可以轻松地更新数据库结构。
  11. myproject/pycache/:这个目录包含Python编译的缓存文件,用于提高导入速度。

        这些文件和目录是一个标准的Django项目的基本组成部分,可以根据项目的需要添加其他文件和目录。它们共同构建了我们的Web应用程序,提供了项目的配置、路由、模板、静态文件等功能。通过编辑这些文件,可以定制和扩展我们的Django应用程序。

2.1.3 settings相关简单配置

        作为Django项目的主要设置文件。我们可以在这里配置数据库连接、应用程序设置、模板设置、国际化等。这是项目的核心配置文件。接下来会讲解一些比较基础的配置与讲解。

  1. INSTALLED_APPS:应用注册。当创建一个Django项目时,Django会自动在settings.py文件中生成一个INSTALLED_APPS列表,其中包含了一些默认的应用程序。我们在创建完自己的应用或使用第三方相关应用时都需要在这里进行注册。
    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:时区配置。

    # TIME_ZONE = 'UTC' 默认时区为UTC,
    改为中国上海:TIME_ZONE = 'Asia/shanghai'
  4. DATABASES:数据库配置。Django默认自带使用sqlite3数据库。可以将数据库修改为mysql或其他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',      
        }
    }
    
  5. ROOT_URLCONF:根路由。指向的也就是我们的项目总路由

    ROOT_URLCONF = 'mysite.urls'
    
  6. DEBUG:调试设置。当 DEBUG 设置为 True 时,Django 处于调试模式。在调试模式下,如果发生错误,Django 会向用户显示详细的错误页面,包括错误消息和代码跟踪,这有助于开发人员识别和解决问题。调试模式还启用了一些开发工具和功能,如自动重新加载代码、数据库查询日志记录等,有助于开发过程中的快速迭代和故障排除。但是,在生产环境中,DEBUG 应设置为 False,以提高安全性。在生产环境中,不应向终端用户显示敏感信息,因此详细的错误页面和调试信息应该被禁用。

    DEBUG = True
    
  7. ALLOWED_HOST:是一个列表,其中包含允许访问你的Django应用程序的主机名或IP地址。这是一项重要的安全设置,用于防止跨站请求伪造(CSRF)和其他潜在的安全漏洞。当DEBUG调试模式为False时,一般将ALLOWED_HOST设置为 ”*“ ,也就是所有地址都可以访问。

    ALLOWED_HOSTS = []
    # 当DEBUG=False时需要这样设置
    ALLOWED_HOSTS = ["*"]
    
  8. TEMPLATES:模板文件设置。是 Django 项目中用于存储HTML模板文件的目录。'APP_DIRS': True,意思为当前模板文件的搜索位置会从应用下方进行查找,这里建议配置'DIRS':[],也就是指定其他查找路径,可以设置为BASE_DIR / 'templates'这样就可以在总路径下创建一个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:用于指定静态文件的基本URL。静态文件包括CSS、JavaScript、图像和其他不需要动态生成的文件。通过设置STATIC_URL,可以告诉Django如何访问和提供这些静态文件。默认也是从应用下进行查找。
    # 一般不进行修改,但是会配置新的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 数据迁移

        注意接下来的命令都要使用manage.py,所有要先cd到自己的项目目录下才能进行。在django中,在设计了模型类后,需要先生成迁移文件,然后再迁移到数据库这两步,而django也自带了几个应用,在创建完项目后,可以先同步迁移一下数据库。

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

        迁移到数据库命令:python manage.py migrate

django已经生成了迁移文件,所有此时只需在终端中输入python manage.py migrate便可以完成迁移。

Django学习(1):Django项目的初步创建与简单配置,第6张

        此时完成迁移后会发现在项目路径下多出一个 db.sqlite3数据库文件,这也就是django默认自带属于的数据库,此时可以使用数据库可视化工具进行连接,可以发现里面已经存在了django应用自带的一些表。

Django学习(1):Django项目的初步创建与简单配置,第7张

        而在django-migrations中显示了django自带的迁移记录

 Django学习(1):Django项目的初步创建与简单配置,第8张

2.1.5 启动Django服务 

        此时完成迁移后,就可以进行Django服务的启动。依旧是在终端输入,启动命令:python manage.py runserver(不指定端口,django会默认启用8000端口)

Django学习(1):Django项目的初步创建与简单配置,第9张

        再点击http://127.0.0.1:8000/

Django学习(1):Django项目的初步创建与简单配置,第10张

        跳转到此页面便是已经安装成功。 

2.2 Django自带的强大后台       

2.2.1 Admin总路由

        我们进入总应用下的urls.py后会发现,在urlpatterns(Django 项目中的一个变量,它定义了项目的 URL 路由映射规则。具体来说,这是一个列表,其中包含了一系列 URL 路由模式(patterns)以及与这些模式关联的视图函数或类。)中已经存在了一个admin路由(一组内置的 URL 路由,用于提供管理员界面(后台管理)功能。这些路由允许管理员用户对应用程序中的数据进行管理,包括创建、读取、更新和删除(CRUD)操作,而无需编写额外的代码。),此时我们便可以启动项目后在路径后拼接上admin便可以进入。

 

        但是此时需要账号密码才能进入,这是我们就需要创建一个用户进行登录后台,在终端中输入命令:python manage.py createsuperuser进行创建超级管理员用户。注册完成后便可以登录进入后台。

Django学习(1):Django项目的初步创建与简单配置,第11张

         此时使用账号密码登录后台。

Django学习(1):Django项目的初步创建与简单配置,第12张

        此时便进入了django的后台管理 。Django 的 admin 后台是一个内置的管理界面,用于管理和维护 Django 应用程序的数据。我们在创建了自己的应用,然后编写完我们数据模型后也可以通过admin.py将自己的数据模型注册到后台并进行操作与管理。admin后台主要功能包括:

  1. 数据库管理: 可以在 admin 后台中管理应用程序的数据模型,查看、添加、编辑和删除数据库记录。这包括对数据摩西模型(例如用户、文章、评论、产品等)执行基本的 CRUD(创建、读取、更新、删除)操作。
  2. 用户和权限管理: admin 后台允许管理用户,包括创建和编辑用户帐户、设置用户权限、重置密码等。可以创建超级用户,并且可以访问 admin 后台以执行高级管理任务。
  3. 可自定义性: 可以自定义 admin 后台的外观和行为。可以添加自定义视图、自定义模型管理器、自定义表单等,以适应项目需求。这样可以扩展 admin 后台的功能,使其满足项目的具体要求。
  4. 日志和历史记录: admin 后台记录了对数据库的所有更改,包括添加、编辑和删除记录的操作。这有助于审计和追踪数据变更。
  5. 多语言支持: admin 后台支持多语言,允许创建多语言管理界面,以便多语言团队协作。
  6. 快速开发和原型设计: admin 后台提供了一个快速原型设计应用程序的方式。在初期开发阶段,可以使用 admin 后台来快速添加和管理数据,而不必为前端界面编写代码。
  7. 安全性: admin 后台是有权限控制的,只有经过身份验证的管理员用户才能访问它。可以设置用户权限以限制其他用户的操作,以确保安全性。

总之,Django 的 admin 后台是一个强大的工具,用于简化管理应用程序的数据和用户。它使开发人员能够快速查看和操作数据库记录,同时提供了可自定义性以适应不同项目的需求。这使得开发、测试和维护 Django 应用程序变得更加便捷和高效。

2.2.2 数据库与后台的对应

        其实在数据库中,我们也可以找到数据库与后台之间的对应关系,比如我们在创建了一个用户后,就可以在auth_user表中找到我们创建的对应用户信息,也可以在后台进行修改等操作。

Django学习(1):Django项目的初步创建与简单配置,第13张Django学习(1):Django项目的初步创建与简单配置,第14张

三,创建应用

3.1 自己的应用

        我们在上方一直在讲解创建项目时自带的主应用,接下来我们就要开始创建自己的应用了。

3.1.1 应用的创建

        首先,还是在命令行输入命令:python manage.py startapp news(应用名),然后回车。然后便可以看到项目路径下多了一个名为news的应用。总结构如下:

Django学习(1):Django项目的初步创建与简单配置,第15张

  1. 应用目录(例如,myapp/): 这是自定义应用程序的根目录,包含了该应用程序的所有文件和子目录。
  2. myapp/__init__.py: 这是一个空文件,用于告诉 Python 解释器将 myapp 目录视为一个 Python 包。
  3. myapp/admin.py: 在这个文件中,你可以注册模型以在 Django 的 admin 后台中进行管理。通过在这里添加适当的代码,可以控制哪些模型可以在 admin 后台中编辑、查看和删除。
  4. myapp/apps.py: 这个文件包含有关应用程序的元数据,如应用程序的名称和配置。通常,不需要修改此文件,除非需要自定义应用程序的配置。
  5. myapp/models.py: 在这个文件中,可以定义应用程序的数据模型(数据库表)。使用 Django 的模型类来创建数据库表,以及字段来定义表的结构。这是自己创建的应用程序中最重要的文件之一,因为它定义了数据的结构。
  6. myapp/views.py: 这个文件包含了应用程序的视图函数或类。视图定义了如何处理来自客户端的请求并返回响应。可以在这里编写业务逻辑,将请求与模型交互,并渲染模板来生成响应。
  7. myapp/tests.py: 在这个文件中,可以编写测试用例来测试应用程序。Django 提供了内置的测试框架,可以帮助编写和运行测试。
  8. myapp/templates/: 这个目录用于存储应用程序的 HTML 模板文件。模板文件包含了应用程序的页面结构和显示逻辑。Django 使用模板引擎来渲染这些模板,生成最终的 HTML 响应。
  9. myapp/static/: 这个目录用于存储应用程序的静态文件,如 CSS、JavaScript 和图像。这些文件不会被动态生成,而是直接提供给浏览器。
  10. myapp/urls/:这个文件刚创建还没有,但是可以一般来说每一个自己创建的应用下都会创建一个urls来保存本应用的路由,然后最后使用include()函数连接到总路由。
  11. myapp/migrations/:应用下的 migrations 包包含了数据库迁移文件,用于管理应用程序的数据模型(数据库表结构)的变化。每当更改数据模型(例如,添加新字段、修改字段类型、删除字段等),Django 就会生成一个新的迁移文件,以记录这些变化。这些迁移文件存储在应用程序的 migrations 包中。

3.1.2 应用的注册

        在创建完自己应用的第一步,就是在总应用的settings中进行注册。

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 下方将来会添加自己的应用或第三方模块应用
    # 将刚才创建的应用进行注册
    'news',
]

3.2 路由的创建

3.2.1 加入路由

        在总路由中加入自己的应用路由并在自己应用下创建一个路由文件:urls.py

from django.contrib import admin
# 导入include
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    # 加入自己应用的路由,两种方法都可以,第二个是命名空间写法
    #,可以在后续使路由,视图函数与模板文件路径设置更加简便,这里先默认使用第一种
    # 注意include的第一个参数约定俗成就是自己应用下的urls,然后在自己应用下进行新建urls.py文件
    path('news/', include("news.urls")),
    # path('news/', include("news.urls", namespace="news"))
]

Django学习(1):Django项目的初步创建与简单配置,第16张

        在自己应用下的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 测试结果

        然后便可以启动服务,进入网站后发现已经不是启动成功,而是page not found,也就是404画面

Django学习(1):Django项目的初步创建与简单配置,第17张

         可以看到这里由于我们设置了debug=True,所以会有下面都有哪些视图的提醒,在后面拼接news/再回车

Django学习(1):Django项目的初步创建与简单配置,第18张

        这里可以看到news/后还有一个index/视图,也就是我们刚才在应用下加入的视图和刚才编写的index视图函数,再在后面拼接上index/,再次回车

Django学习(1):Django项目的初步创建与简单配置,第19张

        此时便可以看到,我们刚才编写的index函数中的HttpResponse的返回结果。 当然使用HttpResponse这只是作为测试,后续在开发中用的多的还是render()函数

3.3 模型的创建

3.3.1 编写模型类

        在我们自己创建的应用程序的 models.py 文件中,可以定义应用程序的数据模型,这些数据模型将映射到数据库表。数据模型定义了表的结构以及表中的字段。每个模型类通常都是一个 Python 类,它继承自 Django 的 models.Model 类,并定义了模型的字段和属性。接下来是一个简单的模型类的创建。

from django.db import models
# Create your models here.
# 创建我们新闻中的第一个类:新闻种类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
# 创建我们新闻中的第二个类:新闻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)

        还有很多其他字段和参数,包括第三方可以使用的富文本插件等等,在后续会做详细解释。 

3.3.2 生成迁移文件

        每次在定义完模型类后,还需要同步到数据库,这时需要先生成迁移文件,命令同上,为:python manage.py makemigrations,输入完后按下回车,会发现提醒生成了两张表(一个模型类就对应了一张表)和一个迁移文件

Django学习(1):Django项目的初步创建与简单配置,第20张

 

        我们再进入应用下的migrations包中,会发现多了一个0001_initial.py文件,这就是我们的第一个迁移文件。

Django学习(1):Django项目的初步创建与简单配置,第21张

3.3.3 迁移到数据库 

        我们刚才只是生成了迁移文件,还没有同步到数据库,这里需要再次迁移,才能将模型类同步到数据库中,生成对应的表。命令为:python manage.py migrate。在命令行输入后按下回车。然后会显示迁移完成。

Django学习(1):Django项目的初步创建与简单配置,第22张

        再次打开数据库查看。 发现会多出刚才创建的两个新表。

Django学习(1):Django项目的初步创建与简单配置,第23张

3.3.4 修改字段或创建新的模型类

        需要注意,我们每次在models.py中增加新的模型类或者修改其中字段时都需要重新生成迁移文件并向数据库进行重新迁移,但是如果是修改类似于verbose_name或类的__str__字符串表示,是不需要重新生成迁移的。这里将会展示增加新的字段或新的模型类(新表)时遇到的问题。

增加新的模型类

        在models.py中加入一个测试模型类:

# 用于测试的模型类
class Test(models.Model):
    test = models.CharField(max_length=10)

        然后需要重新生成迁移文件:python manage.py makemigrations。然后会发现在migrations中多出一个迁移文件。

        再次迁移到数据库:python manage.py migrate。此时便同步到了数据库中。同步成功如下:Django学习(1):Django项目的初步创建与简单配置,第24张

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

        向刚才的test模型类中再次添加新的字段

# 用于测试的模型类
class Test(models.Model):
    test = models.CharField(max_length=10)
    # 测试字段
    test2 = models.CharField(max_length=20)

         再次生成迁移文件:python manage.py makemigrations。此时会发现,提示报错说缺少一个默认值。

Django学习(1):Django项目的初步创建与简单配置,第25张

        

        这个错误消息是由于尝试向数据库表中添加一个非空字段而没有指定默认值,但是已经存在的行需要一个默认值以进行填充。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 命令生成迁移文件。

        这里建议都选择第二个选项。

  1. 按下选项二
  2. 回到models.py中找到刚才添加的字段,加入default默认值参数
    # 用于测试的模型类
    class Test(models.Model):
        test = models.CharField(max_length=10)
        # 测试字段
        test2 = models.CharField(max_length=20, default="默认")
  3. 重新生成迁移文件,应该没有再报错
  4. 重新迁移,也没有报错

Django学习(1):Django项目的初步创建与简单配置,第26张

        当然这里再介绍两个好用但是不太推荐的方法,在项目应用创建的初期,可以使用,但是数据多了之后建议使用Git等版本控制软件 

直接删除所有迁移文件和数据库

        这是最简单粗暴的一种方法,先删除我们应用下migrations中的所有迁移文件和sqlite3数据库(如果使用的MySQL等在MySQL中进行操作):Django学习(1):Django项目的初步创建与简单配置,第27张Django学习(1):Django项目的初步创建与简单配置,第28张

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

然后重新进行迁移:python manage.py migrate

此时便相当于直接初始化重新生成了数据库与数据库中的表

删除迁移文件,迁移记录和表

        这一种方法不会删除数据库,但是要更加麻烦一些

删除迁移文件,数据库中的迁移记录(在数据库中的django_migrations表中,需要注意这里由于刚才同步将django自带应用和我们的应用一起进行了迁移,所有这里需要小心不要删除django自带的迁移记录,需要找到自己的应用的迁移记录)和数据库中我们应用的数据表

Django学习(1):Django项目的初步创建与简单配置,第29张Django学习(1):Django项目的初步创建与简单配置,第30张

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

四,命令讲解

4.1 django-admin

  • django-admin 是全局安装的 Django 命令行工具,它可以在任何地方运行,不仅限于项目的根目录。
  • 可以使用 django-admin 来创建新的 Django 项目,执行与 Django 项目无关的任务,以及在不同的项目之间切换。
  • 例如,可以使用 django-admin startproject projectname 来创建一个新的 Django 项目,而无需在项目目录中使用 manage.py。

    4.2 manage.py

    • manage.py 是每个 Django 项目根目录中的脚本,它是由 Django 自动生成的。
    • manage.py 是用于管理特定 Django 项目的命令行工具。它提供了一种在项目内部执行管理任务的方式。
    • 可以使用 manage.py 来执行数据库迁移、运行开发服务器、创建超级用户、执行测试、收集静态文件等与项目相关的任务。

              python manage.py 回车:可以查看 manage.py 后续相关命令或参数

              python manage.py help:这将列出 manage.py 支持的所有命令以及它们的描述。这个命令将帮助了解可用的 Django 管理命令以及如何使用它们。

              python manage.py help :其中 是你想要获取帮助的特定命令的名称。这将显示有关该命令的详细信息,包括用法、选项和参数。

              总的来说,django-admin 是全局工具,而 manage.py 是特定于每个 Django 项目的工具。通常情况下,会在项目的根目录中使用 manage.py 来执行项目管理任务。如果需要执行与项目无关的全局任务(例如创建新项目),则可以使用 django-admin。

      总结

              在下一篇中会讲解进一步的路由,视图与后台操作等,涉及Django的命令也会在后续编写一个常用命令总结。

      Django官方网址

             Getting started with Django | DjangoDjango学习(1):Django项目的初步创建与简单配置,icon-default.png?t=N7T8,第31张https://www.djangoproject.com/start/

      Django官方文档

              此处为4.2版本

             https://docs.djangoproject.com/en/4.2/Django学习(1):Django项目的初步创建与简单配置,icon-default.png?t=N7T8,第31张https://docs.djangoproject.com/en/4.2/