百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

Django搭建和数据迁移 django数据迁移命令

bigegpt 2024-10-28 12:51 24 浏览

Django框架简单使用

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

1.环境搭建及安装

安装python

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

安装django模块

 py -m pip install Django

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

import django
print(django.get_version())

或者执行命令

// windows: 
py -m django --version

// apple/linux: 
python -m django --version

2. 创建项目

执行创建命令

 django-admin startproject testsite

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

testsite/
    manage.py
    testsite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py

解释每个文件的含义: 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

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

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

py manage.py runserver 8080

4.创建应用或者包

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

py manage.py startapp members

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

members/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

5.编写视图

编辑members/views.py文件

from django.http import HttpResponse


def index(request):
    return HttpResponse("这是用户模块")

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

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

members/
   __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    urls.py
    views.py

编辑urls文件

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

下一步在根 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),
]

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

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

py manage.py runserver

用你的浏览器访问 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',
    }

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

pip install mysqlclient

执行迁移

py manage.py migrate

执行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)

每个字段都是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',
]

然后执行命令

 py manage.py makemigrations members

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

执行迁移命令

py manage.py sqlmigrate members 0001

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

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

py manage.py migrate


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

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

8.总结

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

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

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

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

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

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

相关推荐

悠悠万事,吃饭为大(悠悠万事吃饭为大,什么意思)

新媒体编辑:杜岷赵蕾初审:程秀娟审核:汤小俊审签:周星...

高铁扒门事件升级版!婚宴上‘冲喜’老人团:我们抢的是社会资源

凌晨两点改方案时,突然收到婚庆团队发来的视频——胶东某酒店宴会厅,三个穿大红棉袄的中年妇女跟敢死队似的往前冲,眼瞅着就要扑到新娘的高额钻石项链上。要不是门口小伙及时阻拦,这婚礼造型团队熬了三个月的方案...

微服务架构实战:商家管理后台与sso设计,SSO客户端设计

SSO客户端设计下面通过模块merchant-security对SSO客户端安全认证部分的实现进行封装,以便各个接入SSO的客户端应用进行引用。安全认证的项目管理配置SSO客户端安全认证的项目管理使...

还在为 Spring Boot 配置类加载机制困惑?一文为你彻底解惑

在当今微服务架构盛行、项目复杂度不断攀升的开发环境下,SpringBoot作为Java后端开发的主流框架,无疑是我们手中的得力武器。然而,当我们在享受其自动配置带来的便捷时,是否曾被配置类加载...

Seata源码—6.Seata AT模式的数据源代理二

大纲1.Seata的Resource资源接口源码2.Seata数据源连接池代理的实现源码3.Client向Server发起注册RM的源码4.Client向Server注册RM时的交互源码5.数据源连接...

30分钟了解K8S(30分钟了解微积分)

微服务演进方向o面向分布式设计(Distribution):容器、微服务、API驱动的开发;o面向配置设计(Configuration):一个镜像,多个环境配置;o面向韧性设计(Resista...

SpringBoot条件化配置(@Conditional)全面解析与实战指南

一、条件化配置基础概念1.1什么是条件化配置条件化配置是Spring框架提供的一种基于特定条件来决定是否注册Bean或加载配置的机制。在SpringBoot中,这一机制通过@Conditional...

一招解决所有依赖冲突(克服依赖)

背景介绍最近遇到了这样一个问题,我们有一个jar包common-tool,作为基础工具包,被各个项目在引用。突然某一天发现日志很多报错。一看是NoSuchMethodError,意思是Dis...

你读过Mybatis的源码?说说它用到了几种设计模式

学习设计模式时,很多人都有类似的困扰——明明概念背得滚瓜烂熟,一到写代码就完全想不起来怎么用。就像学了一堆游泳技巧,却从没下过水实践,很难真正掌握。其实理解一个知识点,就像看立体模型,单角度观察总...

golang对接阿里云私有Bucket上传图片、授权访问图片

1、为什么要设置私有bucket公共读写:互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可...

spring中的资源的加载(spring加载原理)

最近在网上看到有人问@ContextConfiguration("classpath:/bean.xml")中除了classpath这种还有其他的写法么,看他的意思是想从本地文件...

Android资源使用(android资源文件)

Android资源管理机制在Android的开发中,需要使用到各式各样的资源,这些资源往往是一些静态资源,比如位图,颜色,布局定义,用户界面使用到的字符串,动画等。这些资源统统放在项目的res/独立子...

如何深度理解mybatis?(如何深度理解康乐服务质量管理的5个维度)

深度自定义mybatis回顾mybatis的操作的核心步骤编写核心类SqlSessionFacotryBuild进行解析配置文件深度分析解析SqlSessionFacotryBuild干的核心工作编写...

@Autowired与@Resource原理知识点详解

springIOCAOP的不多做赘述了,说下IOC:SpringIOC解决的是对象管理和对象依赖的问题,IOC容器可以理解为一个对象工厂,我们都把该对象交给工厂,工厂管理这些对象的创建以及依赖关系...

java的redis连接工具篇(java redis client)

在Java里,有不少用于连接Redis的工具,下面为你介绍一些主流的工具及其特点:JedisJedis是Redis官方推荐的Java连接工具,它提供了全面的Redis命令支持,且...