• Django搭建和数据迁移


    Django框架简单使用

    路由创建,数据库配置,和数据迁移

    1.环境搭建及安装

    安装python

    到官网 https://www.python.org/downloads/ 下载合适自己的python版本。推荐3.9。

    安装django模块

     py -m pip install Django
    
    • 1

    新建py文件并保存,查看当前python django版本

    import django
    print(django.get_version())
    
    • 1
    • 2

    或者执行命令

    // windows: 
    py -m django --version
    
    // apple/linux: 
    python -m django --version
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2. 创建项目

    执行创建命令

     django-admin startproject testsite
    
    • 1

    可以看到自动为我们生成了目录

    testsite/
        manage.py
        testsite/
            __init__.py
            settings.py
            urls.py
            asgi.py
            wsgi.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    解释每个文件的含义:
    manage.py: 管理 Django 项目的命令行工具。
    mysite/ 目录包含你的项目,它是一个纯 Python 包。
    mysite/__init__.py:空文件。
    mysite/settings.py:项目的配置文件。
    mysite/urls.py:路由文件。
    mysite/asgi.py:作为你的项目的运行在 ASGI 兼容的Web服务器上的入口。
    mysite/wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。

    3.启动项目

    // 如果你是苹果端或者linux端,统一python程序命令为 python,我这里用的是windows,python程序环境命令为py。
    py manage.py runserver
    
    • 1
    • 2

    启动成功之后会看到我们默认监听的8000端口,这是一个轻量级的web服务器,最好不要用于生产环境。
    我们访问本地 http://127.0.0.1:8000/ 即可

    如果你想更换端口,后面加上你需要监听的端口就行。

    py manage.py runserver 8080
    
    • 1

    4.创建应用或者包

    Django 中,每一个应用都是一个 独立Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。

    py manage.py startapp members
    
    • 1

    然后会在我们的根目录生成下面目录

    members/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    5.编写视图

    编辑members/views.py文件

    from django.http import HttpResponse
    
    
    def index(request):
        return HttpResponse("这是用户模块")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    这是视图。为了想看见效果,需要将一个URL映射到它,这就是我们需要 URLconf 的原因了。

    为了创建 URLconf,在members目录里新建一个 urls.py 文件。
    你的应用目录:

    members/
       __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        urls.py
        views.py
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    编辑urls文件

    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    下一步在根 URLconf 文件中指定我们创建的 members.urls 模块。在 testsite/urls.py 文件的 urlpatterns 列表里插入一个 include()

    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('members/', include('members.urls')),
        path('admin/', admin.site.urls),
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    函数 include() 允许引用其它 URLconfs。当Django遇到include()时,会截断与此项匹配的URL的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。

    这个时候视图已经路由添加完成执行:

    py manage.py runserver
    
    • 1

    用你的浏览器访问 http://localhost:8000/members/,你就能看见 "这是用户模块"这句话了。

    6.数据库配置

    打开 testsite/settings.py
    项目默认是sqlite,如果要配置其他数据库,按照下面的例子就可以

    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'database',
            'USER': 'root',
            'PASSWORD': '123456',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    ENGINE可选的数据库有
    'django.db.backends.sqlite3'
    'django.db.backends.postgresql'
    'django.db.backends.mysql'
    'django.db.backends.oracle'
    假如我选择的是mysql,则需要安装mysqlpython的数据库驱动,如果是其他就安装相应的数据库驱动,sqlite默认的不需要。

    pip install mysqlclient
    
    • 1

    执行迁移

    py manage.py migrate
    
    • 1

    执行migrate命令会先检查testsite/settings.py里面的INSTALLED_APPS设置,为里面的每个应用创建需要的数据表,至于具体会创建什么,这取决于testsite/settings.py设置文件和每个应用的数据库迁移文件。这个命令所执行的每个迁移操作都会在终端中显示出来。

    然后这个时候你打开数据库,便会发现django生成了相关应用的默认数据库。

    6.创建模型

    打开我们创建好的应用members模型文件 members/models.py

    from django.db import models
    
    
    class UserQuestion(models.Model):
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
    
    class UserAnwser(models.Model):
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
        content_text = models.CharField(max_length=200)
        num = models.IntegerField(default=0)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    每个字段都是Field类的实例,字符字段被表示为CharField ,日期时间字段被表示为 DateTimeFieldmax_length是验证数据长度字段,ForeignKey是为了建立UserAnwserUserQuestion关联关系。

    7.激活模型

    为了把我们的应用members安装到我们的项目当中

    首先要在配置类INSTALLED_APPS中添加设置。因为MembersConfig 类写在文件 Members/apps.py中,所以路径是 'members.apps.MembersConfig'

    testsite/settings.pyINSTALLED_APPS子项添加路径后

    INSTALLED_APPS = [
        'members.apps.MembersConfig',
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    然后执行命令

     py manage.py makemigrations members
    
    
    • 1
    • 2

    makemigrations会检测你对模型文件的修改,并且把修改的部分储存为一次迁移。在你的项目应用目录下会生成相应的迁移文件 members/migrations/0001_initial.py

    执行迁移命令

    py manage.py sqlmigrate members 0001
    
    • 1

    sqlmigrate并没有真正在你的数据库中的执行迁移,只是把命令输出到屏幕上,让我们看到Django认为需要执行哪些SQL语句。

    再次运行 migrate 命令,就会在数据库里创建新定义的模型的数据表。

    py manage.py migrate
    
    
    • 1
    • 2

    你这个时候查看数据可,就可以看到为我们模型创建了数据表,运行migrate迁移会执行所有还没有执行过的迁移(django_migrations会记录你以前执行过哪些迁移)并应用在数据库上

    迁移能让你在开发过程中持续的改变数据库结构而不需要重新删除和创建表,专注于使数据库平滑升级而不会丢失数据。

    8.总结

    Django采用MTV设计,(模型,模板,视图)

    他的orm映射和自带的权限认证系统非常适合我们用来做web开发

    并且他用到的框架核心包较少,很轻量,假如和现在流行的python相关的ai,物联网结合起来用,也不会担心跨语言,与项目融合更好,比如maxkb

    后面我会继续写一部分关于Django的使用方法,主要是项目中常用的

    比如它的api,验证,视图,模板系统。

    – 欢迎点赞、关注、收藏【我码玄黄】,gonghao同名

  • 相关阅读:
    Kafka (四) --------- 生产经验
    振弦传感器表面应变计与振弦采集仪形成岩土工程监测的解决方案
    Java网络编程
    【21 基础纹理(二、凹凸映射的理论)】
    简述《华为数据之道》
    el-table固定指定的行
    传智杯初赛A~D题解
    【数据库数据恢复】无法启动MongoDB服务的数据恢复案例
    笨蛋学算法之LeetCodeHot100_3_最长连续序列(Java)
    记一次 .NET 某药厂业务系统 CPU爆高分析
  • 原文地址:https://blog.csdn.net/qq_30333063/article/details/139016835