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 响应。响应可以是一个 HTML 页面、一个 404 错误页面、重定向页面、XML 文档、或者一张图片…无论视图本身包含什么逻辑,都要返回响应。代码写在哪里都可以,只要在 Python 目录下面,一般放在项目的 views.py 文件中。每个视图函数都负责返回一个 HttpResponse 对象,对象中包含生成的响应。视图层中有两个重要的对象:请求对象(request)与响应对象(HttpResponse)。

# 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:在这里写入路由地址,将上方编写的页面内容

# 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>

效果如下

py_django_html

Django 项目工作流程

通过以上页面的编写,可以看到进入项目是通过 url 路由文件,获取到视图内想要返回的内容,如果有模板存在,可以在视图内引用模板进行内容输出,或者视图内也可以引用数据模型去访问数据库查询返回数据

url > view > template/html

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0