前后端分离的优势
- 后端代码可以复用。
- 代码逻辑清晰,指责解耦。
安装
如果没有安装Django,先需要通过pip安装Django:
pip3 install django
安装完成后,可以在Python环境中调用以下代码查看Django版本:
>>> import django
>>> django.get_version()
'3.1.7'
我们目前使用的是3.1.7这个版本。
创建项目目录
开始开发一个项目的第一步,是使用Django自带的命令创建一个Django项目:
django-admin startproject mysite<文件目录名称>
得到目录中的文件如下:
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
我们继续在manage.py同一目录下新建log、media、static、templates等目录,最终我们得到的目录如下:
mysite/
log/
media/
static/
templates/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py
以下是这些目录和文件的用处是:
-
最外层的mysite 根目录
:是整个项目的容器,它可以重命名为任何名字。 -
log目录
:存放项目日志的文件夹。 -
media目录
:存放用户上传文件的文件夹。 -
static目录
:存放css、js、image等静态文件的文件夹。 -
templates目录
:存放html文件的文件夹。 -
manage.py
:是一个管理 Django 项目的命令行工具。 -
里面一层的 mysite目录
:是一个纯 Python 包,里面包含整个项目的代码。 -
mysite/__init__.py
:是一个空文件,告诉 Python 这个目录应该被认为是一个Python 包。 -
mysite/settings.py
:是Django 项目的配置文件。 -
mysite/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。 -
mysite/wsgi.py
:作为项目的运行在 WSGI 兼容的Web服务器上的入口。
到了这一步,可以在manage.py同一目录下执行以下命令,用于测试Django项目是否真的创建成功:
python3 manage.py runserver
设置项目templates路径
在我们新建了templates目录以后,我们还需要在settings.py中指定项目templates的路径:
import os
...
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR,'templates')],
'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',
],
},
},
]
...
Django静态文件管理
1、STATIC_ROOT
STATIC_ROOT 是在部署静态文件时(即使用pyhton manage.py collectstatic命令时)所有的静态文静聚合的目录,django会把所有的static文件都复制到该目录下。
2、STATICFILES_DIRS
STATIC_ROOT 一般是在部署的时候才发挥作用, 而在实际开发过程中,静态文件的一般安放在以下两处:
一是在每个app目录下对应的static文件夹中,所以在html文件中用到静态文件时,django会自动先在每个app目录下搜索static文件夹,所以static目录名称不要随便写,以保证django能顺利找到。
还有一处,就是在所有的app目录之外,建立一个共用的文件夹,这个文件夹的目录就是通过STATICFILES_DIRS来指定,当然这种做法不是必须的。
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'common_static')
]
STATICFILES_DIRS告诉django,首先到STATICFILES_DIRS里面寻找静态文件,其次再到各个app的static文件夹里面找(注意, django查找静态文件是惰性查找,查找到第一个,就停止查找了)。
3、STATIC_URL
这个变量定义的是我们在浏览器中访问静态文件时,URL中资源路径开头那段的内容,默认是'static',所以部署中的网页,浏览器访问静态资源的URL都是:
http://xxx.xxx.xxx.xxx:xxxx/static/...
注意:这个STATIC_URL部分实际映射的路径相当于STATIC_ROOT指定的路径。
后台数据库设置
Django后台数据库的连接信息,我们需要在settings.py中指定:
...
DATABASES = {
'default': {
'ENGINE':'django.db.backends.mysql',
'NAME':'testdjango',
'USER':'root',
'PASSWORD':'root',
'HOST':'127.0.0.1'
}
}
...
同步后台数据信息
现在可以执行以下两行命令,将项目的管理信息同步到后台数据库了:
python3 manage.py makemigrations
python3 manage.py migrate