发布时间:2019/09/01 09:17:30   更新时间:2020/07/31 19:50:28
请注意,到这一步,virtualenv和在virtualenv里边安装的django等库都安装完毕了,在前边文章里有介绍。
这里谈谈django开发时,django框架代码的产生。
django提供了两级的框架,一是主程序,二是app。
总的来说,django的这个设置,是很有用的。
1、激活env环境。
2、进入你要创建主程序目录的地方
3、运行命令:django-admin startproject main_project
这样,就会在你的当前目录里,产生如下目录结构:
main_project /
manage.py
main_project/
__init__.py
settings.py
urls.py
wsgi.py
这些目录和文件的用处是:
最外层的文件夹: main_project/ 是根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
manage.py: 一个让你用各种方式管理 Django 项目的命令行工具。
main /__init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
main /settings.py:Django 项目的配置文件。
main /urls.py:Django 项目的 URL 声明,是你网站的“目录”的后端体现。也就是说如果后端推送的url,都在这里体现。(注意,前端也可能有自己的url系统。)
main /wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
BASE_DIR:是项目根目录,manage.py所在目录。就是因为这个目录自动产生,所以根目录的名字可以随便改。
DEBUG:如果True,有错误的时候,会把错误打在屏幕上。日志中还会打一些debug打印。
ALLOWED_HOSTS:一般设置ALLOWED_HOSTS = ['*'],允许任意主机访问。
APPEND_SLASH=True:设置项是否开启URL访问地址后面不为/跳转至带有/的路径。(非默认项,需自己添加。)
INSTALLED_APPS:注册应用,新添加的app(不管是第三方的还是自己生成的)要在这里注册。
默认已经包含了一些app如下
#管理员站点
'django.contrib.admin',
#认证授权系统:这个用户认证系统帮助实现了管理员站点的注册和认证。方法可以被引用,数据库表也可以被继承。
'django.contrib.auth',
#内容类型框架
'django.contrib.contenttypes',
#会话框架
'django.contrib.sessions',
#消息框架
'django.contrib.messages',
#管理静态文件的框架
'django.contrib.staticfiles',
#第三方应用(如果使用要在这里注册)
'rest_framework',
#安装的应用。(如果生成要在这里注册)
'test_app.apps.TestAppConfig',
AUTHENTICATION_BACKENDS:身份验证后端。(非默认项)如添加不同的身份验证机制则添加。
MIDDLEWARE:中间件。
TEMPLATES_DIR:templates目录,在项目中统一放置模板文件。(非默认项)
TEMPLATES:模板设置
TEMPLATES = [
{
#默认的是django的内置模板DTL。
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATES_DIR],
#在应用app所在目录下找模板。
'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',
#模板中调用时可用STATIC_URL
'django.template.context_processors.static'
],
},
},
]
DATABASES:django使用的数据库设置,默认是sqlite3,可以改为mysql
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#修改使用mysql
'ENGINE': 'django.db.backends.mysql',
'NAME': xxx,
'USER': 'root',
'PASSWORD': 'xxx',
'HOST': 'localhost',
'PORT': '3306',
}
}
CACHES:django的caches机制。(非默认项)
AUTH_USER_MODEL:更换django的auth的默认user表为自定义。(非默认项)
PASSWORD_HASHERS:加密算法。(非默认项)
LANGUAGE_CODE = 'zh-hans':设置中文language code。
TIME_ZONE = 'Asia/Shanghai':设置中文时区。
USE_TZ = True:#使用UTC时间
USE_I18N = True:#文件中启用i18n
USE_L10N = True:#文件中启用l10n
#在应用app中建立static文件夹存储静态文件。
STATIC_URL = '/static/'
#在项目中统一放置前端静态文件。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, '../../frontend/static'),
]
#django会自动把项目里所有静态文件,包括前端、admin或者你有多个app下的所有静态文件都集合整理到你STATIC_ROOT设置的目录里
#python manage.py collectstatic
#该命令收集项目下的(各app的)静态文件,统一保存到 STATIC_ROOT。
STATIC_ROOT = os.path.join(BASE_DIR,'static')
REST_FRAMEWORK:应用drf。
在 Django 中,每一个app应用都是一个 Python 包,原则上一个app会有一些自己独立的models(数据库表)和url。实际上,你想独立的程序模块,都可以定义为app。
app的位置在主程序代码的根目录中,也就是与主程序代码的manage.py平级。你也可以将app放在其它目录,但是应用model和url的时候,尤其是app公用model时,会有一些问题。所以,不建议改变app的位置。
产生方式是:
1、我们进入与manage.py平级的主程序代码根目录。
2、运行命令django-admin startapp test_app
或者只要是在manage.py目录,可以无差别的使用命令python manage.py test_app
我们使用这个命令而不是简单的使用 "Python" 是因为 manage.py 会设置 DJANGO_SETTINGS_MODULE 环境变量,这个变量会让 Django 根据 /settings.py 文件来设置 Python 包的导入路径。
命令会默认产生test_app/文件夹
main_project /
manage.py
main_project/
test_app/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
这些目录和文件的用处是:
test_app /__init__.py:一个空文件,让app称为一个Python 包。
test_app / admin.py:注册app的model。
test_app / apps.py:注册app的名字。
test_app / models.py:app的数据库表定义。
test_app / views.py:app视图函数。(一个对属于自己url的request请求返回的功能函数)
test_app / tests.py:app的测试脚本。