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

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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




相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
49 3
|
3月前
|
关系型数据库 MySQL 数据库连接
使用Django框架完成用户的增删改查操作
使用Django框架完成用户的增删改查操作
35 1
|
4月前
|
前端开发 数据库 Python
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
|
14天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
4月前
|
存储 关系型数据库 MySQL
Python Django框架下将MySQL数据库的内容在网页上动态展示(修订版-2021-05-17)
Python Django框架下将MySQL数据库的内容在网页上动态展示(修订版-2021-05-17)
30524 0
|
3月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
86 7
|
3月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
101 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
11天前
|
设计模式 存储 数据库
框架分析(5)-Django
框架分析(5)-Django
|
1月前
|
设计模式 前端开发 数据库
Django是一个用Python编写的开源Web应用框架
Django是一个用Python编写的开源Web应用框架
13 1