赞
踩
Django提供了django-admin
这个功能强大的命令行管理工具,其中最重要的就是可以利用它来完成项目的创建
django-admin startproject djangoy
startproject是django-admin
的子命令,用于创建项目。这里,使用这个子命令创建了djangoy项目
项目的骨架如下:
接下来我们启动django项目:
django manage.py runserver
看到如下界面,代表一个初始的django项目创建成功:
django-admin在创建项目的时候会生成settings.py文件,项目的所有配置都可以在这个文件中完成。Django定义了一些默认的配置,后期可以根据应用的需要进行修改,下面看一看默认生成的settings.py文件中都包含些什么
1、项目路径:
BASE_DIR = Path(__file__).resolve().parent.parent
2、SECRET_KEY:
这个变量本质上是一个加密盐,用于对各种需要加密的数据做Hash处理,例如密码重置、表单提交、session数据等
通常的做法是将它存储到系统环境变量中,通过os.getenv(key,default=None)
的方式去获取
SECRET_KEY = 'django-insecure-gf_ty$0g((purom8o0(c_v_ij&)yyyheihei!nqu3-42x'
3、DEBUG:
通常在开发环境中将它设置为True,项目在运行的过程中会暴露出一些出错信息和配置信息以方便调试。但是在线上环境中应该修改其为False,避免敏感信息泄露
DEBUG = True
4、ALLOWED_HOSTS:
用于配置可以访问当前站点的域名,当DEBUG配置为False时,它是一个必填项,设置ALLOWED_HOSTS=['*']
允许所有的域名访问
ALLOWED_HOSTS = []
5、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',
]
6、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',
]
7、ROOT_URLCONF:
这个变量标记的是当前项目的根URL配置,是Django路由系统的入口点
ROOT_URLCONF = 'djangoy.urls'
8、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',
],
},
},
]
9、WSGI_APPLICATION:
Django的内置服务器将使用的WSGI应用程序对象的完整Python路径
WSGI_APPLICATION = 'djangoy.wsgi.application'
10、DATABASES:
这是一个字典变量,标识项目的数据库配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
11、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',
},
]
12、LANGUAGE_CODE和TIME_ZONE:
这两个变量分别代表项目的语言环境和时区
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
13、USE_I18N和USE_L10N:
Web服务搭建完成之后,可以面向不同国家的用户提供服务,这就要求应用支持国际化和本地化。这两个布尔类型的变量标识当前的项目是否需要开启国际化和本地化功能
USE_I18N = True
14、USE_TZ:
标识对于时区的处理,如果设置为True,不论TIME_ZONE设置的是什么,存储到数据库中的时间都是UTC时间
USE_TZ = True
15、STATIC_URL:
用于标记当前项目中静态资源的存放位置
STATIC_URL = 'static/'
16、DEFAULT_AUTO_FIELD:
主键的默认类型
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
中国的项目,设置语言为中文:
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
}
}
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文件,需要进入根目录,执行命令:
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。