Django项目框架搭建,快速入门Django

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: Django提供了django-admin这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建


1.django-admin创建项目骨架


Django提供了django-admin这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建


django-admin startproject djangoy


startproject是django-admin的子命令,用于创建项目。这里,使用这个子命令创建了djangoy项目

项目的骨架如下:



启动django项目:


django manage.py runserver


看到如下界面,代表一个初始的django项目创建成功:



2.settings.py文件配置项解析


django-admin在创建项目的时候会生成settings.py文件,项目的所有配置都可以在这个文件中完成。Django定义了一些默认的配置,后期可以根据应用的需要进行修改,下面看一看默认生成的settings.py文件中都包含些什么


项目路径:


BASE_DIR = Path(__file__).resolve().parent.parent


ECRET_KEY:


这个变量本质上是一个加密盐,用于对各种需要加密的数据做Hash处理,例如密码重置、表单提交、session数据等


通常的做法是将它存储到系统环境变量中,通过os.getenv(key,default=None)的方式去获取


SECRET_KEY = 'django-insecure-gf_ty$0g((purom8o0(c_v_ij&)yyyheihei!nqu3-42x'


DEBUG:


通常在开发环境中将它设置为True,项目在运行的过程中会暴露出一些出错信息和配置信息以方便调试。但是在线上环境中应该修改其为False,避免敏感信息泄露


DEBUG = True


ALLOWED_HOSTS:

用于配置可以访问当前站点的域名,当DEBUG配置为False时,它是一个必填项,设置ALLOWED_HOSTS=['*']允许所有的域名访问


ALLOWED_HOSTS = []


INSTALLED_APPS:

这个参数配置的是当前项目需要加载的App包路径列表。Django默认会把admin(管理后台)、auth(权限系统)、sessions(会话系统)加入进去,可以根据项目的需要对其增加或删除配置


INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]


MIDDLEWARE:


当前项目中需要加载的中间件列表配置。与INSTALLED_APPS变量类似,Django也会默认加入一些中间件,例如用于处理会话的SessionMiddleware、用于处理授权验证的AuthenticationMiddleware等。同样,可以根据项目的需要对其增加或删除配置


MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]


ROOT_URLCONF:

这个变量标记的是当前项目的根URL配置,是Django路由系统的入口点


ROOT_URLCONF = 'djangoy.urls'


TEMPLATES:

这是一个列表变量,用于项目的模板配置,列表中的每一个元素都是一个字典,每个字典代表一个模板引擎


TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        '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',
            ],
        },
    },
]


WSGI_APPLICATION:

Django的内置服务器将使用的WSGI应用程序对象的完整Python路径


WSGI_APPLICATION = 'djangoy.wsgi.application'


DATABASES:


这是一个字典变量,标识项目的数据库配置


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}


AUTH_PASSWORD_VALIDATORS:

Django默认提供了一些支持插拔的密码验证器,且可以一次性配置多个。其主要目的是避免直接通过用户的弱密码配置申请


AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


LANGUAGE_CODE和TIME_ZONE:

这两个变量分别代表项目的语言环境和时区


LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'


USE_I18N和USE_L10N:

Web服务搭建完成之后,可以面向不同国家的用户提供服务,这就要求应用支持国际化和本地化。这两个布尔类型的变量标识当前的项目是否需要开启国际化和本地化功能


USE_I18N = True


USE_TZ:

标识对于时区的处理,如果设置为True,不论TIME_ZONE设置的是什么,存储到数据库中的时间都是UTC时间


USE_TZ = True


STATIC_URL:

用于标记当前项目中静态资源的存放位置


STATIC_URL = 'static/'


DEFAULT_AUTO_FIELD:

主键的默认类型


DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'


3.修改项目的默认配置


配置语言环境和时区


中国的项目,设置语言为中文:


LANGUAGE_CODE = 'zh-Hans'


设置为对时区不敏感,这样就不用特殊处理存储在数据库中的时间了:


TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False


配置开发数据库


Django自带的sqlite3不适合做应用项目的数据库,所以,这里用MySQL替代项目的默认数据库


DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 配置使用的数据库引擎
        'NAME': 'django_test',  # 数据库的名称
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root',  # 数据库密码
        'HOST': '127.0.0.1',  # 数据库服务器地址,这里使用本地开发环境
        'PORT': '3306',  # 数据库服务器端口号,MySQL默认为3306
    }
}


4.初始化项目环境


INSTALLED_APPS中应用的数据库迁移


manage.py的migrate命令用于将应用的模型定义或修改同步到数据库中。migrate命令会检查INSTALLED_APPS里配置的应用列表,依次迭代为每个应用创建所需要的数据表


进入当前项目的虚拟环境


Django对于数据库的迁移工作通过两个命令来实现:


python manage.py makemigrations
python manage.py migrate


对于将来应用的每一次表结构定义修改,都需要再次执行makemigrations命令,Django会重新生成一个新的数据库迁移文件,记录表结构之间的差异,命令规则是对上一个迁移文件的序列号加1,如0002_xxxx、0003_xxxx。之后,再次执行migrate命令让新的迁移文件生效,完成表结构定义的修改


创建超级用户登录管理后台


manage.py提供了createsuperuser命令用于创建超级用户


python manage.py createsuperuser --username=admin --email=youremail@qq.com


当前命令执行后,需要重复输入两次密码(根据自己的需要设置),最终返回“Superuser created successfully”代表成功创建了超级用户

访问:http://127.0.0.1:8000/admin进入后台管理页面



创建应用


利用manage.py提供的startapp命令创建一个video应用的命令如下:


python manage.py startapp video


执行命令成功后,会创建一个如下结构的app文件夹:



生成requirements.txt文件


若要给当前的项目生成requirements.txt文件,需要进入根目录,执行命令:


pip freeze > requirements.txt


freeze会列出当前的虚拟环境中安装的依赖包及其版本号,它的输出格式与requirements.txt文件内容格式完全一样,所以,可以将其输出进行重定向,得到依赖清单


asgiref==3.5.2
Django==3.2.16
mysqlclient==2.1.1
pytz==2022.4
sqlparse==0.4.3
tzdata==2022.4


将来,需要重建当前项目环境的时候,就可以执行命令:


pip install -r requirements.txt




相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
数据采集 中间件 Python
如何在Django框架中进行输入验证和过滤?
通过综合运用这些方法,可以在 Django 框架中有效地进行输入验证和过滤,提高应用的安全性和数据质量。同时,还可以根据具体的业务需求进一步扩展和定制验证逻辑。
108 64
|
2月前
|
开发者 数据库管理 Python
Django框架和Flask框架的区别
总体而言,Django 适合需要快速搭建大型应用的开发者,而 Flask 则更适合有特定需求和追求灵活性的开发者。
123 64
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
196 45
|
1月前
|
监控 安全 测试技术
Django框架的表单验证和过滤机制是否可以应对复杂的安全场景?
综上所述,Django 框架的表单验证和过滤机制在一定程度上可以应对复杂的安全场景,但需要综合运用多种手段来进一步提升安全性,以适应不断变化的安全挑战。
33 1
|
2月前
|
搜索推荐 API 开发者
Django框架和Flask框架的适用场景分别是什么?
总体而言,Django 更适合需要全面功能和大规模开发的场景,而 Flask 则更适合灵活性要求高、小型项目或特定需求的开发。当然,具体的选择还应根据项目的具体情况、团队的技术能力和偏好等因素来综合考虑。在实际应用中,开发者可以根据项目的特点和需求,灵活选择使用这两个框架,或者结合它们的优势来构建更强大的 Web 应用程序。
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
|
2月前
|
安全 前端开发 数据库
Django框架
总的来说,Django 是一个非常优秀的 Web 框架,它为开发者提供了坚实的基础和丰富的功能,使得构建高质量的 Web 应用变得更加容易和高效。无论是初学者还是经验丰富的开发者,都可以从中受益,利用它来实现自己的创意和想法。
51 4
|
2月前
|
Python
Django 框架的路由系统
Django 框架的路由系统
52 6
|
3月前
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
150 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
2月前
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
72 2