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 代码效果:

相关推荐
luoluoal2 分钟前
基于Spring Boot的装饰工程管理系统源码(springboot)
java·spring boot·后端
2401_857617623 分钟前
Spring Boot框架在中小企业设备管理中的创新应用
数据库·spring boot·后端
神奇夜光杯17 分钟前
Python酷库之旅-第三方库Pandas(181)
开发语言·人工智能·python·excel·pandas·标准库及第三方库·学习与成长
光明中黑暗18 分钟前
Python 学习笔记
笔记·python·学习
Jonas2425 分钟前
Spring里边的设计模式
后端
tang138976427 分钟前
Python(包和模块)
开发语言·python
涛涛6号28 分钟前
PageHelper(springboot,mybatis)
java·spring boot·后端
正义的彬彬侠41 分钟前
绘制近似线性可分支持向量机的分类边界和支持向量
人工智能·python·机器学习·支持向量机·分类·svm
纪怽ぅ1 小时前
LSTM——长短期记忆神经网络
python·深度学习·神经网络·算法·机器学习·lstm
豪宇刘1 小时前
Shiro回话管理和加密
java·后端·spring