Django学习笔记(二)Django项目初建



1. 创建项目

项目创建

我是用的是PyCharm,可以直接在创建项目的同时指定

  • 模板文件目录名,默认为templates
  • app名称,默认为空

这两项内容后续会有介绍。


2. 目录说明

文件路径

/blog_test

  • blog_test        # 项目目录
    • __init__.py   # 初始化内容 默认为空,可以添加自定义的方法
    • settings.py   # 配置文件
    • urls.py      # 路由,即URL与函数的关系
    • wsgi.py        # runserver命令就使用wsgiref模块做简单的web server
  • blogTemplates     # 创建项目时定义的模板文件文件夹名(如不设置,默认为templates)
  • manage.py       # 管理文件


3. settings.py 配置文件

优先说明项目的配置文件里比较常用的内容:

3.1. BASE_DIR

项目根目录,通过两次os.path.dirname方法,逐层取到根目录

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

3.2. ALLOWED_HOSTS

允许访问的IP,测试时可以直接填入*

ALLOWED_HOSTS = ['*']

3.3. DEBUG

是否调试模式,在调试模式时,会输出错误详情。例如进入未定义的url地址,会提示当前项目定义过的路径有什么。如果非调试模式,会直接报404。

DEBUG = True

设置为非调试模式时,需要设置ALLOWED_HOSTS,否则会报错:CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.

开发时建议开启DEBUG模式,否则修改保存后需要重启服务才能适配到变更。

DEBUG=TrueDEBUG=True

DEBUG=False:
DEBUG=False

3.4. TEMPLATES

模板相关配置节点,其中DIRS属性是路径相关设置,如果是pycharm生成的项目,此处会通过os.path.join方法将根目录和templates文件夹路径拼接,指向该文件夹。如果是控制台创建的项目,不会默认生成templates文件夹,此处属性也会为空值。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'blogTemplates')]
        ,
        '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',
            ],
        },
    },
]

3.5. STATIC_URL

静态文件的别名(相当于一层映射),此处如果不是/static/ 在后续页面引用的时候,也需要把名称改为对应的名称,需要与STATICFILES_DIRS一同使用。

STATIC_URL = '/static/'

3.6. STATICFILES_DIRS

实际静态文件路径

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'img')
]

比如这样,在访问静态文件时,项目路径可以将图片放在根目录的img文件夹下,页面访问时路径写STATIC_URL中定义的路径(static)即可匹配到所需文件。

此处可以写多行对应多个路径,实际使用时,引用路径都需要引用上一步设置的别名,查找时是有顺序的,如果有同名文件,则会按照第一次匹配到的路径内文件为准!

可见图片在根目录的img文件夹下
文件路径
访问时地址需要写为/static/sheep.jpg,因为STATICFILES_DIRS中将静态文件地址指定为img路径下。
页面访问路径

3.7. DATABASES

数据库配置

# 默认配置 sqlite3
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

# mysql参考
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bookmanage',
        'HOST': '127.0.0.1',
        'PORT': 3306,
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxx'
    }
}



4. Project 与 App

至此已经把一个django项目最初的一些配置说完了,那么又要加入一个新的概念:app。

4.1. 什么是app?

简单来说,一个项目会有很多的模块,如果所有代码写在一起肯定不便于维护。**因此需要将不同的模块做拆分,正好就对应着一个个app。**每个app负责各自模块的逻辑功能实现。因此后续的代码都会写在不同的app里。

4.2. 如何创建app?

在终端中进入当前项目根目录,输入

python manage.py startapp appTest

即可创建一个名为appTest的app。

4.3. 注册app

在settings.py中,有系统app的注册配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 'appTest',
    'appTest.apps.AppConfig'
]

在app创建之后,就需要在这里注册对应的app。

有两种方法:

  1. 直接加入app名称,对应上述倒数第二行代码。
  2. 加入app路径下的apps.AppConfig。

一般情况下,二者等效。不过每个app也可以有自己的配置,整个项目的配置都写在settings.py中,每个app的配置,就会写在app路径下的apps.py文件中了。例如app的别名(在django后台中显示使用)

但是如果直接加入app名称,则django会默认加载appConfig基类中的数据,自定义的配置就失效了。这时就需要使用第二种方式注册app,放置自定义配置失效。

注:在使用PyCharm创建项目时,在Application Name 选项中输入app名称,系统会自动帮你创建app,并且会自动注册,这里注册的方式是第二种。


5. app路径说明

app创建后,会发现项目路径增加了以下内容

app路径

__init__.py  # 初始化文件 同样也标志我们的app可以被引用
admin.py    # 此文件与后台管理配置相关
apps.py    # 此文件内可自定义一些当前app的配置
models.py  # 模型,用于声明数据库结构,定义数据结构后可自动生成对应的数据表。
tests.py    # 测试文件
views.py    # 视图函数文件,主要在此文件内写逻辑关系


6. 运行Django项目

6.1. 命令行:

```
python manage.py runserver 127.0.0.1:8000
```

如果多个项目指定了同一个接口,在访问时,会访问第一个启动的项目。

6.2. pycharm启动:

工具条图示
需要在工具条中切换到django项目,再点击启动。不能使用右键直接run py文件。

点击后,默认端口8000,进入即可访问django项目了

成功启动图示

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值