IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Django 之视图url参数获取 -> 正文阅读

[Python知识库]Django 之视图url参数获取

Django 中的视图主要是负责接受 Web 请求 HttpRequest ,同时进行逻辑处理,并返回 Web 响应 HttpResponse给请求者。
通过创建一个 webtest2 项目以及创建一个 book 应用为例进行说明
#创建一个 webtest2 项目,执行如下命令: 
django-admin startproject webtest2
进入 webtest2 项目目录,并创建 book 应用,命令如下:
cd webtest2
python manage.py startapp book
webtest2/settings.py INSTALLED_APPS 项安装应用
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',  #添加book应用到项目中
]
webtest2/settings.py DATABASES 项配置使用 MySQL 数据库 dbtest
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': "dbtest",    #数据名提前设置好
        'HOST':"localhost",
        'PORT':"3306",
        'USER':"root",
        'PASSWORD':"XXX", #密码自己设置
    }
}
创建模板目录结构 templates/book,如下:
webtest2/settings.py TEMPLATES 项配置模板查找路径:
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',
            ],
        },
    },
]
跳转webtest2/webtest2/__init__.py 文件,写入代码:
import pymysql
pymysql.install_as_MySQLdb()

大概配置好了可以跳转了,使用命令启动 Django 服务器:python manage.py runserver

这时候在编译器中可以看到:

#PS D:\Program Files (x86)\python\webtest2> python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
December 15, 2021 - 20:36:45
Django version 1.11.28, using settings 'webtest2.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

点击倒数第二行的 htto://127.0.0.1:8000/

?

实际上,视图就是一个 Python 函数,被定义在 " 应用 /views.py" 文件中。使用视图时需要进行两方面操作,分 别是定义视图、配置 URL ,且两个操作不分先后顺序。
webtest2/book/views.py 文件中定义一个视图函数:
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
    return render(request,"book/index.html")

在webtest2>>>templates>>>book>>>创建一个index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>首页</h1>
</body>
</html>
重要的一步来了,即配置 URL ,将视图函数和 url 对应起来,在 webtest2/urls.py 中:

?

from django.conf.urls import url,include
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r"^",include("book.urls")),     #包含booktes应用中的 urls 文件
]
book 目录下创建 urls.py 文件并编辑其内容:
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r"^index$",views.index), #建立 url 和 views.index 视图函数的关联
    url(r"^show(\d+)$",views.show)
]
启动服务器并通过浏览器访问 http://127.0.0.1:8000/index,可以看到就是打开index.html页面的样子:

当请求的 url 被看做是一个普通的 Python 字符串且进行匹配时,通常是不包括域名、get 或 post 参数的。请求地址如下: http://127.0.0.1:8000/show1?hello=666

①若去除掉域名和参数部分,并将最前面的/去除后,只剩下如下部分与正则匹配,如下: show

②此时,打开 book/urls.py 文件,定义与这个地址匹配的 url 如下: url(r'^show$',views.show), # 定义 url

③在 book/views.py 中补充创建视图函数 show()

def show(request,id):
    return HttpResponse('show')

我们可以在匹配过程中从 url 中捕获参数,并把每个捕获的参数都作为一个普通的 Python 字符串传 递给视图的。获取值需要在正则表达式中使用小括号表示,下面两种方式完成:

(1) 位置参数;
(2) 关键字参数。

1:位置参数

此时,可以直接使用小括号,并通过位置参数传递给视图。以下是详细步骤:

①为了提取参数值,我们可以修改上面的正则表达式如下: url(r"^show(\d+)$",views.show),

②修改视图函数 show(),如下:

def show(request,id):
    return HttpResponse('show参数值:%s'%id)

③完成上述操作后,在地址栏输入如下地址: http://127.0.0.1:8000/show666


?2:关键字参数

此时,可以在正则表达式部分为组命名,这就是关键字参数,需要使用到的正则表达式为组命名

(?P<name>)
分组起别名

①修改正则表达式,其中,?P 部分表示为这个参数定义的名称为 bid[注:后边使用时,必须写相同的名称], 也可以是其它名称,如下: url(r"^show(?P<bid>\d+)$",views.show),

②修改视图 show()函数,注意该视图函数 show()必须要有一个参数名为 bid,否则报错:

from django.http import HttpResponse
def show(request, bid): 
    return HttpResponse("显示关键字参数值:%s" % bid)

Django 文档 | Django 文档 | Django (djangoproject.com)

有兴趣可以自行阅读

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-12-16 17:37:39  更:2021-12-16 17:39:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:03:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码