Web应用框架-Django应用基础

1. 认识Django

Django是一个用Python编写的开源高级Web框架,

旨在快速开发可维护和可扩展的Web应用程序。

使用Django框架的开发步骤:

1.选择合适的版本 2.安装及配置 3.生成项目结构 4.内容开发 5.迭代、上线、维护

Django官网:

Django documentation | Django documentation | Django

URL调度器:

URL调度器 | Django 文档 | Django

2. 安装Django框架

以管理员身份运行终端,并安装django框架:

pip3 install django -i https://pypi. tuna. tsinghua. edu.cn/simple/

显示已安装的 Django 包的详细信息:

pip3 show django

3. 新建并运行Django项目

3.1 新建

新建文件夹内 shift+鼠标右键 在此处打开 Powershell 窗囗(S)

新建一个项目,名称为 my_project :

django-admin startproject my_project

3.2 运行

pycharm终端中运行新建好的项目:

python manage.py runserver

4. Django项目结构

文件名 用途
__init__.py 空目录,表示该目录应该被视为一个 Python 包
asgi.py 部署项目配置
settings.py 项目的配置和设置,如数据库连接、时区、使用的应用程序等。
urls.py 定义项目的 URL 分发器,即 URL 到视图函数的映射。
wsgi.py 部署项目。
db.sqlite3 sqlite数据库
manage.py 命令行管理工具,执行各种 Django 管理任务

5. 编写Django视图

在setting中,配置访问路径范围:

DEBUG = True 是否支持debug运行

ALLOWED_HOSTS = '\*' 配置访问路径范围 " * " 表示任意

python 复制代码
import os

# SECURITY WARNING: don't run with debug turned on in production!

DEBUG = True #是否支持debug运行

ALLOWED_HOSTS = ['*'] #配置访问路径范围 *:任意

6. 开发新模块

6.1 创建新hello模块

在pycharm终端中输入:

python manage.py startapp hello

执行这个命令后,Django 会在项目目录下创建一个名为 hello 的新目录,

并在该目录中生成一组初始文件

6.2 hello world!

urls.py:浏览器访问地址

参数1:浏览器匹配的字符串

参数2:调用的模块的函数

python 复制代码
# 配置文件
from django.contrib import admin
from django.urls import path, include
from hello.views import hello_world # 引入模块函数

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', hello_world),
]

views.py:响应数据工具

由django提供,用于向浏览器返回数据

def hello_world(request): #业务函数

return HttpResponse("Hello World!") #向浏览器响应数据

python 复制代码
from django.http import HttpResponse
def hello_world(request): #业务函数
    return HttpResponse("Hello World!") #向浏览器响应数据

7.多级路由

7.1 一级路由(test_django)

一级路由转二级路由:

python 复制代码
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'))
]

7.2 二级路由(hello)

在hello文件下创建python文件,名为**"** urls "

7.2.1 URL 配置

在 hello\urls.py下,定义 URL 路由

python 复制代码
from django.urls import path
from hello.views import hello_world
from hello.views import hello_china

urlpatterns = [
    path('world/', hello_world,name='hello_world'),
    path('china/', hello_china,name='hello_china'),
]

7.2.2 响应数据工具

工具由django提供,用于向浏览器返回数据

python 复制代码
from django.http import HttpResponse

def hello_world(request): #业务函数
    return HttpResponse("Hello World!") #向浏览器响应数据

def hello_china(request):
    return HttpResponse("Hello China!")

小结:

url地址分为不同的级别,其优点:

1.地址目录结构清晰,便于维护

2.高内聚、低耦合:当某一模块被修改时,其他模块不受影响

8.函数视图

创建静态页面

新建temple/ index.html

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

8.1 渲染HTML页面

8.1.1 views.py:

python 复制代码
def hello_html(request):
    html = """
        <html>
            <body>
                <h1 style = "color:#f00;">Hello HTML!</h1>
            </body>    
        </html>
    """
    return HttpResponse(html)

8.1.2 hello\urls.py:

python 复制代码
from django.urls import path
from hello.views import hello_html
urlpatterns = [
    path('html/',hello_html,name='hello_html'),
]

8.1.3 代码效果:

8.1.4 配置TEMPLATES设置

settings.py:

python 复制代码
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',
            ],
        },
    },
]

8.2 article_list 函数

8.2.1 views.py:

python 复制代码
def article_list(request,month):
    return HttpResponse('article:{}'.format(month))

8.2.2 hello\urls.py:

python 复制代码
path('article/<int:month>/',article_list,name='article_list'),

8.2.3 代码效果:

8.3 search函数/获取get参数

8.3.1 views.py:

GET:get请求 ; get:获得数据

python 复制代码
def search(request):
    name = request.GET.get('name','')
    print(name)
    return HttpResponse('查询成功')

8.3.2 hello\urls.py:

python 复制代码
path('search/',search,name='search'),

8.3.3 代码效果:

8.4 render_to_string()函数

8.4.1 语法结构:

render_to_string(template_name,context=None,request=None,using=None)

参数 作用
template name 模板名称
context 模板上下文对象(字典dict)
request 请求对象
using 模板引擎名称(如:Jinja2)

8.4.2 views.py:

python 复制代码
def render_str(request):
    page_name = 'index.html'
    html = render_to_string(template_name=page_name)
    return HttpResponse(html)

#或者

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

8.4.3 hello\urls.py:

python 复制代码
path('render/str/',render_str,name='render_str'),

8.4.4 代码效果:

8.5 render()函数

8.5.1 语法结构:

参数 作用
request 请求对象
template name 模板名称
context 模板上下文对象(dict)
content type MIME类型,默认为text/html
status HTTP状态码
using 模板引擎名称(如:Jinja2)

8.5.2 views.py:

python 复制代码
def render_html(request):
    return render(request,'index.html')

8.5.3 hello\urls.py:

python 复制代码
path('render/html/',render_html,name='render_html'),

8.5.4 代码效果:

相关推荐
2601_9620715736 分钟前
类变量和全局变量的查找路径有什么区别?
开发语言·python
卷无止境2 小时前
独立开发者的"富矿地带":哪些垂直领域值得你押注一辈子?
后端·python
Java后端的Ai之路2 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
计算机毕业编程指导师2 小时前
计算机毕设选题推荐:基于Hadoop与Spark的Steam游戏数据分析系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·steam游戏
计算机毕业编程指导师2 小时前
【计算机毕设选题推荐】基于Hadoop+Spark的白鹿抖音评论大数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习 深度学习
大数据·hadoop·python·计算机·spark·毕业设计·抖音评论
Zootopia6262 小时前
飞行力学知识梳理1|飞行性能与稳定性
人工智能·python·算法·机器学习·无人机·学习方法·信息与通信
Y3815326622 小时前
搜索 API 延迟优化:并发数、超时与超时的真实代价
python·搜索引擎
狼爷2 小时前
从零用 Java 构建 AI Agent 框架:JavaManus 设计与实现深度解析
后端·langchain·aigc
郑州光合科技余经理2 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
wangqiaowq2 小时前
PII 脱敏指的是:把个人身份信息(PII)中能识别到具体个人的敏感部分,用替换、遮蔽、变形等方式处理掉,使得数据在保留可用性的同时,不再直接暴露个人身份。
python