当前位置: 首页 > article >正文

Python Web 框架中 Django 框架

1.简介:

Django是一个高级的Python Web 框架,他鼓励快速开发和干净、使用的设计。Django遵循MVC(模型-视图-模板)设计模式,旨在帮助开发者以更少的代码完成更多的工作。它提供了很多内置的功能,比如用户认证,内容管理等,非常适合快速开发数据库驱动的网站。

2.Django的安装与项目创建:

【1】Django的安装

在管理员模式的命令提示符中输入 pip3 install django -i https://pypi.tuna.tsinghua.edu.cn/simple/

【2】Django项目的创建

创建一个文件夹,在文件夹中按住shift+右键,打开Windows PowerShell,

输入 django-admin[.py] startproject my_project

【3】配置os模块

在创建的文件中找到settings.py,输入import os

【4】启动开发服务器

在PyCharm的终端中输入 python manage.py runserver

3.开发流程:

【1】创建模块

在PyCharm的终端中输入 python manage.py startapp hello ,创建了一个名为hello的应用,命令执行后,会在hello目录下创建以下文件和目录:

(1)migrations/ : 这是一个目录,包含数据库迁移文件和目录。

(2)__init__.py : 一个空文件,告诉Python这个目录应该被是为一个Python包。

(3)admin.py : 用于定义Django admin界面的定制。

(4)apps.py : 定义了如何配置这个应用。

(5)models.py : 定义了数据库类型。

(6)tests.py : 用于编写测试用例。

(7)views.py : 定义了视图函数和类。

【2】项目开发流程

(1)一级URL与二级URL

在Django中,URL分为一级URL和二级URL(也成为包含的URL)。一级URL是指在项目的根URL配置文件中定义的URL,而二级URL则是各个应用的URL配置文件中定义的URL。

一级URL(项目的urls.py)

一级URL配置通常位于Django项目的根目录下的urls.py文件中。这个文件负责定义整个项目的URL模式,并且可以包含其他应用的URL配置。例如:

在views.py中

from django.http import HttpResponse

def hello_world(request):
    return HttpResponse('hello world')

def hello_china(request):
    return HttpResponse('hello china')

在urls.py中

from django.contrib import admin
from django.urls import path
from hello.views import hello_world,hello_china    #导入模块

urlpaatterns = [
    path('admin/',admin.site.urls),
    path('hello/',hello_world,name='hello_world'),
    path('china/',hello_china,name='hello_china')
]

通过在终端中启动服务器,在已得到的网站后加world/,页面中会显示hello world文本。加china/,页面中会显示hello china文本。

(2)二级URL(应用的urls.py)

二级URL配置位于各个应用的目录下的urls.py文件中。这些文件定义了该应用内部的URL模式。例如,如果你有一个hello的应用,你可以在hello应用的目录下创建一个urls.py文件:

项目的urls.py中

from django.contrib import admin
from django.urls import path
from django.urls import include

urlpatterns = [
    path('admin/',admin.site.urls),
    path('hello/',include('hello.urls'))   #hello应用中的urls.py
]

应用的urls.py中

from django.urls import path
from hello.views import hello_china,hello_html,hello_world,article_list,search
   
urlpatterns = [
    path('world/',hello_world,name='hello_world'),
    path('china/',hello_china,name='hello_china'),
    path('html/',hello_html,name='hello_html'),
    path('article/<int:month/>',article_list,name='article_list'),
    path('search/',search,name='search'),
]

views.py中

from django.http import HttpResponse

def hello_world(request):
    return HttpResponse('hello world')

def hello_china(request):
    return HttpResponse('hello china')

def hello_html(request):
    html = """
        <html>
            <body>
                <h1 style="color:#f00;">hello html</h1>
            </body>
        </html>

    """
    return HttpResponse(html)

def article_list(request,month):
    return HttpResponse('article:{}'.format(month))

def search(request):
    name = request.GET.get('name','')         #GET为请求,get为获得数据
    print(name)
    return HttpResponse('查询成功')

通过在终端中启动服务器,

在已得到的网站后加hello/world/,页面中会显示hello world文本。

在已得到的网站后加hello/china/,页面中会显示hello china文本。

在已得到的网站后加hello/html/,页面中会显示html中的hello html文本。

在已得到的网站后加hello/article/{month}/,页面中会显示article:{month}文本。

在已得到的网站后加hello/search/?张三,页面中会显示查询成功文本。

(3)在 Django 中创建视图并渲染 index.html 文件

views.py中

from django.shortcuts import render
from django.http import HttpResponse #响应数据工具由django提供,用于向浏览器返回数据
from django.template.loader import render_to_string


def render_str(request):
    page_name = 'index.html'
    html = render_to_string(template_name = page_name)
    return HttpResponse(html)

def render_html(request):
    return render(request,'index.html')

在templates文件夹中创建一个index.html

index.html中

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>我的HTML标签</h1>
</body>
</html>

应用的urls.py中

from django.urls import path
from hello.views import render_str, render_html

urlpatterns = [
    path('render/str/',render_str,name='render_str'),
    path('render/html/',render_html,name='render_html')
]

注意:确保Django项目的settings.py文件中的TEMPLATES配置正确地指向了模板文件夹。

当访问对应的URL时,Django就会调用 render_str 和 render_html 视图函数,并渲染index.html文件,将其作为HTTP响应返回给用户。

(4)render方法和render_to_string方法

在(3)中,render_str函数使用了render_to_string方法,这个方法用于渲染一个模板并返回一个字符串,而不是一个完整的 HttpResponse 对象。这个函数通常用于模板内容作为字符串传递给其他函数或在邮件中使用。

在(3)中,render_html函数使用了render方法,这个方法直接返回一个HttpResponse对象,其中包含了渲染后的HTML内容。这是Django中渲染模板的推荐方法,因为它自动处理了模板的渲染和HTTP响应的创建,这个函数不需要额外的导入。


http://www.kler.cn/news/364434.html

相关文章:

  • 【工具】Ghidra|Ghidra 安装过程以及脚本运行方式
  • 中国建设银行广东省分行珠海市分行营业网点装修工程采购项目市场调研供应商征集公告
  • stm32单片机基于rt-thread 的 串行 Flash 通用驱动库 SFUD 的使用
  • 【QT】QChart绘制曲线与散点图
  • 一文搞懂大模型量化和大模型微调
  • 微信小程序-获取头像和昵称
  • Scrapy | 通过爬取豆瓣Top250电影信息来学习在中间件中应用随机请求头和代理ip
  • C++:排序算法
  • Spring Cloud --- GateWay和Sentinel集成实现服务限流
  • pycharm中使用ctrl+鼠标滚轮改变字体大小
  • 微积分复习笔记 Calculus Volume 1 - 3.6 The Chain Rule
  • 直觉微调——简化语言模型对齐过程
  • opencv学习笔记(4):图像属性和基本图形绘制
  • 【纯血鸿蒙】HarmonyOS和OpenHarmony 的区别
  • 【LInux】Shell脚本编写基本语法
  • 快速获取 GitHub 个人资料成就徽章
  • LinkedList 源码分析
  • 数据清洗的具体方法有哪些?
  • 数字+文旅:虚拟数字人盘活景区文化旅游资源新策略
  • ajax 读取文件
  • Erric Gamma 关于resuable code的采访
  • Rust小练习,编写井字棋
  • Python异常检测- DBSCAN
  • ASP.NET MVC-font awesome-localhost可用IIS不可用
  • 51单片机快速入门之 串行通信 2024/10/21
  • Android Activity SingleTop启动模式使用场景