Django 是 Python 的一个主流 web 框架,提供一站式解决方案,开发成本低,内建 ORM,数据管理后台,登录认证,表单,RESTAPI 等功能,适合开发中大型项目。
Python 还有其他的 Web 框架,如:Flask(轻量级)、Tornado(异步)
Django 目前已更新到 5.0 版本,参考链接:https://docs.djangoproject.com/zh-hans/5.0/
需要注意和 Python 版本对应,本文以 Django 3.2.23
开发环境准备
pip3 install Django==3.2.23
创建项目
在 Pycharm 中创建 Django 项目,或者可以命令行创建创建项目
django-admin startproject devops
项目结构如下:
devops/
manage.py
devops/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
这些目录和文件的用处是:
- 最外层的
devops/
根目录只是你项目的容器,根目录名称对 Django 没有影响,你可以将它重命名为任何你喜欢的名称。 manage.py
:一个让你用各种方式管理 Django 项目的命令行工具。你可以阅读django-admin 和 manage.py获取所有manage.py
细节。- 里面一层的
devops/
目录包含你的项目,它是一个纯Python包。它的名字就是当你引用它内部任何东西时需要用到的Python包名。(比如devops.urls
)。 devops/__init__.py
:一个空文件,告诉Python这个目录应该被认为是一个Python包。devops/settings.py
:Django 项目的配置文件。devops/urls.py
:Django 项目的 URL 声明,就像你网站的“目录”。devops/asgi.py
:作为您的项目在 ASGI 兼容的 Web 服务器上的入口运行。devops/wsgi.py
:作为您的项目在 WSGI 兼容的 Web 服务器上运行的入口。
运行项目
创建好项目后,有一个 Django 自带的页面可以运行
python3 manage.py runserver 8000
可直接在本地访问 http://127.0.0.1:8000/
简单编写页面
需要先创建一个应用,Python 中应用的概念可以理解为页面中的某个功能,或者模块,当然也可以不创建应用,而在 devops 目录下创建一个 urls.py
来进行使用和配置
python3 manage.py startapp myapp
应用目录结构如下:
devops/
myapp/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
devops/myapp/views.py
:一个视图函数,简称视图,是一个简单的 Python 函数,它接受 Web 请求并且返回 Web 响应。
# devops/myapp/views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("FeiYi\'s Blog")
devops/urls.py
:在这里写入路由地址,将上方编写的页面内容指向 URL。
# devops/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views # 导入应用视图py文件
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index), # 新增路由路径index/,并指向视图文件的index方法
]
运行项目并访问 http://127.0.0.1:8000/index/
html 页面
添加极简风html文件
# devops/template/myappHtml.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>FeiYi's Blog</title>
</head>
<body>
<h1>欢迎来到FeiYi博客首页</h1>
</body>
</html>
添加视图
# devops/myapp/views.py
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("FeiYi\'s Blog")
def myappHtml(request):
return render(request, 'myappHtml.html') # 套用模板目录内指定文件的函数
添加路由
# devops/urls.py
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index),
path('html/', views.myappHtml),
]
基于以上示例,我找一点 py 介绍内容引用到模板页面中去。文件目录位置为 devops/myapp/xxx.txt
更改视图
def myapphtml(request):
file_path = os.path.join(os.getcwd(), 'myapp', 'xxx.txt') # 文件内容位置
with open(file_path, encoding='utf-8') as f: # 读取文件
result = f.read()
context = {'result': result}
return render(request, 'myapphtml.html', context) # 返回内容时,套用模板去显示内容
更改html
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>FeiYi's Blog</title>
</head>
<body>
<h1>欢迎来到FeiYi博客学习Python</h1>
<pre>{{ result }}</pre> <!-- 引用视图中读取文件的结果,pre标签用来维持原文件格式 -->
</body>
</html>
效果如下
Django 项目工作流程
通过以上页面的编写,可以看到进入项目是通过 url 路由文件,获取到视图内想要返回的内容,如果有模板存在,可以在视图内引用模板进行内容输出,或者视图内也可以引用数据模型去访问数据库查询返回数据
url > view > template/html