Django+Vue.js - 第一章 走进Django
第一章 走进Django
了解Django
Django 诞生于2003年,在2006年加入BSD许可协议,成为开源Web框架
优势
- 功能完善,容易上手,开发速度快,安全性强;
- 完善的在线文档;
- 模型自带数据库ORM(Object-Relational Mapping 对象关系映射)组件;开发无需学习其他数据库访问技术
- 可以使用正则表达管理路由映射;
MVC 与 MTV
主流web框架基本都使用MVC或MTV模式;使用 MVC 模式最大的优势是可以降低系统各个模块间的耦合度
MVC
- M(Model): 各个功能的实现(CRUD),其中包含模型实体类和业务处理类;
- V(View): 负责页面显示和用户交互,包含有html,css,js组成的各种页面;
- C(Controller):用于将用户请求转发给相应的模型处理,并根据模型的处理结果向用户提供相应的响应。
MTV
- M(Model): 负责业务对象和数据的关系映射(ORM)
- T(Template): 负责页面显示和用户交互,包含有html,css,js组成的各种页面;
- V(View): 负责业务逻辑,在适当的时候调用Model和 Template;

安装
pip install django
创建项目
django-admin startproject django_demo_1
此时项目文件如下
django_demo_1/ # 根目录,与项目无关,可以随意命名
├── django_demo_1 # 项目目录
│ ├── asgi.py # 与ASGI 兼容的web服务器,为项目提供服务的入口
│ ├── __init__.py # 视该目录为包
│ ├── settings.py # 全局配置文件 通过from django.conf import settings引用
│ ├── urls.py # 全局路由配置,一般在其中配置引用app路径和静态文件路径
│ └── wsgi.py # 兼容WSGI的web服务器,为项目提供服务的入口
└── manage.py # 命令行使用程序,通过命令行方式与Django项目进行交互
创建app
cd django_demo_1
python manage.py startapp app1
#################
├── app1
│ ├── admin.py # admin后台管理使用
│ ├── apps.py # 应用管理使用
│ ├── __init__.py
│ ├── migrations # 数据迁移目录
│ │ └── __init__.py
│ ├── models.py # 模型文件 Models
│ ├── tests.py
│ └── views.py # 测试用例
├── django_demo_1
│ ├── asgi.py
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-38.pyc
│ │ └── settings.cpython-38.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
创建应用后应在全局配置文件中注册应用
vim django_demo_1/settings.py
ALLOWED_HOSTS = ['*'] # 允许访问地址,
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
]
处理控制器
Django,控制器主要由视图文件views.py和路由文件url.py组成
views 实现具体的处理逻辑,返回响应
render函数将参数三【字典或对象】(若有)提交给参数二指向的html文件进行渲染
# app1/views.py
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request, "app1/index.html")
url 实现路由,控制每个请求到达哪个视图函数;
通常在主urls中采用引用app下urls的方法实现层级路由
# django_demo_1/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls'))
]
# app1/urls.py
from django.urls import path
from . import views as a1_v
prefix = 'app1'
urlpatterns = [
path("index/", a1_v.index), # 访问路径 'app1/index'
]
# 使用 index/ 则访问 index 或 index/均能到达此视图,使用index则不行
为使得render函数正确执行,需要在全局配置文件中指定模板文件所在目录
# django_demo_1/settings.py
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',
],
},
},
]
在 manage.py 所在目录创建templates目录存储模板文件
├─app1
│ ├─migrations
│ │ └─__pycache__
│ └─__pycache__
├─django_demo_1
│ └─__pycache__
└─templates
└─app1
| └─index.html
└─40x.html
└─50x.html
└─framework.html
templates/app1/index.html 文件内容如下
{% extends 'framework.html'%}
{% block head %}
{% endblock %}
{% block body %}
<h1>这是index页</h1>
{% endblock %}
这里使用了django中模板的继承和引用语法,后续会讲
framework.html 文件内容如下
<!DOCTYPE html>
<html lang="CN">
<head>
<meta charset="UTF-8">
<title>Page</title>
{% block head %}
{% endblock %}
</head>
<body>
{% include 'header.html' %}
{% block body %}
{% endblock %}
<!-- footer -->
{% include 'footer.html' %}
</body>
</html>
其中header.html 和 footer.html 目前为空,为以后预留
访问 app1/index

第一个app的第一个简陋的页面完成!

浙公网安备 33010602011771号