Django 安装及基本配置

Django 安装及基本设置

Django简介

官网:https://www.djangoproject.com
官方文档:https://docs.djangoproject.com

Django安装

  • 测试环境:python3.6.3
  • Django版本:2.1.7

Django任务命令行工具

  • django-admin

         Type 'django-admin help <subcommand>' for help on a specific subcommand.
         
         Available subcommands:
             
             [django]
                 check
                compilemessages
                 createcachetable
                 dbshell
                 diffsettings
                 dumpdata
                 flush
                 inspectdb
                 loaddata
                 makemessages
                 makemigrations
                 migrate
                 runserver
                 sendtestemail
                 shell
                 showmigrations
                 sqlflush
                 sqlmigrate
                 sqlsequencereset
                 squashmigrations
                 startapp
                 startproject
                 test
                 testserver
             Note that only Django core commands are listed as settings are not properly configured (error: Requested setting 		INSTALLED_APPS,         but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure()          before accessing settings.).
    
  • manager.py

    manager.py是对django-amin的简单封装。

        Type 'manage.py help <subcommand>' for help on a specific subcommand.
         
         Available subcommands:
         
         [auth]
             changepassword
             createsuperuser
         
         [contenttypes]
             remove_stale_contenttypes
         
         [django]
             check
             compilemessages
             createcachetable
             dbshell
             diffsettings
             dumpdata
             flush
             inspectdb
             loaddata
             makemessages
             makemigrations
             migrate
             sendtestemail
             shell
             showmigrations
             sqlflush
             sqlmigrate
             sqlsequencereset
             squashmigrations
             startapp
             startproject
             test
             testserver
         
         [sessions]
             clearsessions
         
         [staticfiles]
             collectstatic
             findstatic
             runserver
    

Django项目创建

  • 方法一:

    工作目录执行:django-admin startproject mysite
    mysite为项目名称,可任意命名

    • 目录结构1:

    工作目录:

    mysite: 根目录

    manage.py
    mysite:

    __init__.py
    settings.py
    urls.py
    wsgi.py

  • 方法二:

    工作目录执行:django-admin startproject mysite .
    区别在于方法一在项目外层会创建mysite命名的根目录。

    • 目录结构2:

    工作目录:

    manage.py
    mysite:

    __init__.py
    settings.py
    urls.py
    wsgi.py

  • 结果测试:

    根目录执行: python manager.py runserver
    根目录下生成项目数据库文件db.sqlite3
    结果如下则表示成功:

    Performing system checks...
    
    System check identified no issues (0 silenced).
    
    You have 15 unapplied migration(s). Your project may not work properly until you
     apply the migrations for app(s): admin, auth, contenttypes, sessions.
    Run 'python manage.py migrate' to apply them.
    February 28, 2019 - 11:12:52
    Django version 2.1.7, using settings 'mysite.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.
    

创建应用

Django中具体的功能组件称为‘应用’。

  • 方法一:

    工作目录中执行python manager.py startapp blog创建名为blog的应用。

  • 方法二:

    工作目录中执行django-admin startapp blog创建名为blog的应用。

  • 目录结构:

    工作目录:

    mysite: 根目录

    blog: blog应用目录

    migrations: blog应用数据库表结构

    __init__.py

    __init__.py
    admin.py 注册数据模型,自定义后台管理功能等
    apps.py blog应用配置,比如应用后台命名等
    models.py blog应用数据模型
    tests.py 编写测试文档来测试所建立的应用
    views.py 定义函数视图或类视图。

    mysite: mysite项目目录

    __init__.py
    settings.py mysite项目初始化设置(包括数据库,应用添加、中间件等)
    urls.py mysite项目路由配置(视图函数或应用的url.py文件的映射关系)
    wsgi.py Web Server Gateway Interface

    manage.py 项目任务命令工具
    db.sqlite3 使用SqlLite3本地数据库时生成的默认数据库文件,名称可以在settings.py文件中定义

settings.py模块

项目配置,如果不配置相关字段默认值在 django/conf/global_settings.py
python manage.py diffsettings 可以查看与默认配置的差异

  • BASE_DIR

    项目根目录
    如何将多个应用放置到apps目录下:
    1. 在于manger.py同级目录下创建apps文件夹。
    2. 将已创建的应用文件剪切到apps目录下。
    3. 将apps目录插入临时环境变量路径下:sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
    4. pycharm中可以将apps目录设置为源码路径,右键->Make Director as -> Resource Root。

  • SECRET_KEY

    用于安全加密、签名等,不能为空。
    创建项目时生成,生成方式如下:\

        from django.core.management import utils  
        utils.get_random_secret_key()  
    
  • DEBUG

    标记开发模式生产环境,值True | False

  • ALLOWED_HOSTS

    允许访问的域名或者IP,DEBUG为True时可以为空。

  • INSTALLED_APPS

    应用注册,创建的应用配置到这里才能使用

        INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'blog',]
    
  • MIDDLEWARE

    中间件
    django请求/响应处理的钩子框架,这是一个轻量级的插件系统,
    用于在全球范围内改变django的输入或输出。
    django的中间件在settings的MIDDLEWARE列表中配置激活,
    中间件有严格的依赖顺序,按列表顺序自上而下的执行。

        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

    在settings.py文件中通过ROOT_URLCONF指定根级url的配置。
    ROOT_URLCONF = 'mysite.urls'

  • TEMPLATES

    'APP_DIRS': True, 按照app路径下templates路径搜索,
    'APP_DIRS': False, 按照DIRS字段设置路径搜索,
    扩展:Django如何采用jinja2的模板引擎

    	TEMPLATES = [{
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                os.path.join(BASE_DIR, 'templates'),
                os.path.join(BASE_DIR, 'statics')],
            'APP_DIRS': False,
            '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不是完整的web后端框架,它需要和一个WSGI服务器配套,
    由WSGI服务器负责网络通讯部分, django依赖wsgi接口创建socket方法。
    该项指向 mystie 项目目录下wsgi.py的application方法。
    WSGI_APPLICATION = 'mysite.wsgi.application'

  • DATABASES

    此项配置数据库引擎
    django多数据库联用配置方式

        DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
            'OPTIONS': {
                'timeout': 20,
            }
        },
    	}
    
  • AUTH_PASSWORD_VALIDATORS

    配置密码强度验证方式

	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

    语言设置
    英语:‘en-us’
    中文简体:‘zh-hans’
    中文繁体:‘zh-hant’

  • TIME_ZONE

    时区设置
    世界时间:‘UTC’
    中国时间:‘Asia/Shanghai’

  • USE_I18N

    Internationalization, I18N表示I与N之间有18个字母。
    Django是否开启国际化支持

  • USE_L10N

    localization, L10N表示L与N之间有10个字母。
    Django本地化支持

  • USE_TZ

    跨时区操作,时间强制转换成UTC时间
    国内服务可以设置为False

  • STATIC_URL

    静态文件路由
    STATIC_URL = '/static/'

  • STATICFILES_DIRS

    开发模式静态文件存放路径,
    默认情况下静态文件放置在每个应用的static文件夹下,
    如果我们需要将所有静态文件都归类到一个目录,则需要如下配置:

    	STATICFILES_DIRS = [
    	    os.path.join(BASE_DIR, 'statics'),
    	]
    
  • STATIC_ROOT

    生成环境静态文件存放路径
    STATIC_ROOT = os.path.join(BASE_DIR, "all_statics")
    在部署生成环境时运行python manage.py collectstatic会把所有静态文件汇聚到该路径下。

  • MEDIA_URL

    上传文件路由
    MEDIA_URL = '/media/'

  • MEDIA_ROOT

    用户上传目录
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    在FileField、ImageFIled等字段中指定upload_to字段用于规定文件在MEDIA_ROOT目录下的位置。

命令回顾

  • 创建Django项目
    django-admin.py startproject project_name

  • 创建应用
    python manage.py startapp app_namedjango-admin.py startapp app_name

  • 创建数据表

    • 创建更改的文件
      python manage.py makemigrations
    • 将生成的py文件应用到数据库
      python manage.py migrate
  • 清空数据表,删除所有数据但保留数据表
    python manage.py flush

  • 数据库导出,appname不指定则默认导出所有应用的数据库
    python manage.py dumpdata [ appname] > data.json

  • 数据库导入,不需要指定appname
    python manage.py loaddata data.json

  • 启动开发服务器

    • 一般模式,默认8000端口:
      python manage.py runserver

    • 当提示端口被占用的时候,可以指定其他端口:
      python manage.py runserver 8001

    • 设置所有网络可以访问:
      python manage.py runserver 0.0.0.0:8000

    • 创建超管
      python manage.py createsuperuser

    • 修改用户密码
      python manage.py changepassword username

  • 进入django项目环境终端

    开发过程中如果不清楚运行结果可以通过终端调试

    python manage.py shell

  • 进入数据库shell环境
    python manage.py dbshell

猜你喜欢

转载自blog.csdn.net/weixin_39974140/article/details/88787302
今日推荐