django开发之项目框架和settings设置


类别:web开发   

发布时间:2019/09/01 09:17:30   更新时间:2020/07/31 19:50:28


本文讲述的环境:ubuntu、python3、virtualenv。

请注意,到这一步,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服务器上的入口。

settings.py中的要点

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。

 

app代码的产生

在 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的测试脚本。


本文网址:https://www.pyfield.com/blog/?id=22