1.django-admin创建项目骨架


django-admin



django-admin

项目的骨架如下:


image


启动django项目:



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


image


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


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


项目路径:



ECRET_KEY:


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


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



DEBUG:


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



ALLOWED_HOSTS:

ALLOWED_HOSTS=['*']



INSTALLED_APPS:

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



MIDDLEWARE:


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



ROOT_URLCONF:

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



TEMPLATES:

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



WSGI_APPLICATION:

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



DATABASES:


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



AUTH_PASSWORD_VALIDATORS:

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



LANGUAGE_CODE和TIME_ZONE:

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



USE_I18N和USE_L10N:

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



USE_TZ:

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



STATIC_URL:

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



DEFAULT_AUTO_FIELD:

主键的默认类型



3.修改项目的默认配置


配置语言环境和时区


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



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



配置开发数据库


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



4.初始化项目环境


INSTALLED_APPS中应用的数据库迁移


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


进入当前项目的虚拟环境


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



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


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


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



Superuser created successfully

访问:进入后台管理页面


image


创建应用


startapp



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


image


生成requirements.txt文件


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



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



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