南油网站建设沈阳专业网站制作

pingmian/2026/1/25 5:47:43/文章来源:
南油网站建设,沈阳专业网站制作,网站界面设计方案,wordpress仿站教程20161.最简单的路由配置 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表#xff1b;你就是以这种方式告诉Django#xff0c;对于客户端发来的某个URL调用哪一段逻辑代码对应执行。 1.1 例1#xff1a; 第一步#xff1a;在…1.最简单的路由配置 URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表你就是以这种方式告诉Django对于客户端发来的某个URL调用哪一段逻辑代码对应执行。  1.1 例1   第一步在 urls.py中写入 urlpatterns [path(admin/, admin.site.urls),path(articles/, views.articles), ]   在views.py中写入给请求返回的response对象 def articles(request):print(文章页)return HttpResponse(文章页)    小结上面这种是最基本的不带url后面不带任何参数的。 1.2 path方法把url写死了 urls.py中写入 path(articles/2009/, views.articles),   访问变成了 原来的articles/没有用了路由信息的改变。    1.3re_path #  为了解决path上面把url写死用re_path 目的减少代码冗余用正则来写 # articles中需要一个接受参数# 在urls.py文件中写其中artcles函数需要一个接受参数re_path(^articles/([0-9]{4})/$, views.articles1), # 无名分组  小结需要在views函数中写一个形参才能接受 ([0-9]{4})/$匹配出来的参数  # 于是在views中加入一个参数。 def articles(request, y): print(文章页) return HttpResponse(文章页)  运行结果如下小结这样就可以实现的多个url的输入满足正则即可。# articles中需要2个接受参数# urls中的代码 re_path(r^articles/([0-9]{4})/([0-9]{2})/$, views.articles), # 无名分组按位置传参数articles后面的参数依次传给views 中的articles函数# views中的代码 def articles(request, y,m): print(文章页, y, m) return HttpResponse(文章页)  pycharm中控制台打印出的代码 # 即是获取到了/articles/后面的 /2019/12/等2个参数   ## 注意^ 和$ 的使用  1.4 URl和re_path如果要匹配正则规则都需要使用^和$来卡path内部限制死了的(必须完全匹配)  1.5 1. path 内部封装好了,自动限制首尾的规则 2. url 没有封装,需要自己手动添加正则规则(同re_path方法)# 在url前后加上参数都是可以访问的 /dsdarticles/ 可以访问 /articles/sdad 可以访问 如果要卡的话 需要自己写上正则来匹配# path内部前后都卡死了的其中re_path 和url是一样的 urls中的代码 url(articles/, views.articles_url),views中的代码上面的2种情况都是没有参数的 哈哈 def articles_url(request): print(文章页) return HttpResponse(文章页)   1.6无名分组见上面 按位置传参 1.7 有名分组(按关键字传参) ##1传入一个参数给views中函数/2019 url.py代码 re_path(^articles/(?Pyear[0-9]{4})/$, views.articles1), # 有名分组views中的函数处理接受到的url的函数articles1 def articles1(request, year): print(文章页111, year) return HttpResponse(文章页1111) ##1处理客户端url中的参数是2个的参数传参是关键字传参。 urls.py文件中代码 re_path(r^articles/(?Pyear[0-9]{4})/(?Pmonth[0-9]{2})/$, views.articles),#得出url传给articles中的参数是2个 都是关键字传参 在函数articles中必须写上month和year才行。views中代码 def articles(request, month, year): print(文章页面, year, month) return HttpResponse(文章页)  1.8 说白了就是客户各种输入你内部就行接受判断并返回。客户输入的形式/articles/参数/参数 我们需要在内部就行处理接受参数有名分组合(关键字传参必须是在url中定义的参数 在views中对应的函数中的参数)无名分组(按形参顺序就行传参对应在views中的函数中的参数可以随便取名接受就行)   小结针对1.1-1.8的路由层面的 1.url和re_path差不多内部没有限制可以在前面加参数或者后面加参数就行访问但是只能每次在项目下URls下添加路由有点麻烦。 2.解决1的麻烦就是在url和re_path中使用正则表达式可以在访问/articles/.... 前面不变的情况下 增加更多的参数的  上面介绍了加1中参数和2中参数到我们视图处理函数views中对应接受就行。  # 上面的URl中的路由信息全部写在了主项目中url中  3.不足的地方每次都需要在主项目的urls中去写上路由的配置信息有点繁琐不利于维护。 解决办法在每一个app中建立url在主项目下的url创建分组从主文件向下app的url中找即可。  2.路由分发  在上图的主项目的url中写上上面的路由分发。 然后对应在app01的url写上真的路由信息   然后对应在app01的url写上真的路由信息(同下)  在app02的URls中写上真的路由信息(只是在主项目的文件下url中就行查找是哪个下对应的url路由信息不至于不像之前没有分组的时候那么乱全部写在一起只需要在主文件的URl写上最上面的那个信息即可) # 类似于在广东省下面去找深圳市是一样的道路 views中的代码 def test(request): return HttpResponse(app02-test)    3.反向解析 3.1例子暂时还没有用反向解析 在app01 url.py中的代码是 from django.urls import path, re_path from app01 import viewsurlpatterns [path(test/, views.test),path(articles/, views.articles_url),path(login/, views.login, namelogin),path(index/, views.index) # 当登录成功 重定向跳转index 也必须配置在这个下面]   app01中的views的代码是 def login(request):if request.method GET:return render(request, login.html)else:username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app01/index/)else:return redirect(app01/login)def index(request):return HttpResponse(h2index页面/h2)   在主项目文件夹下的模板文件夹的文件是 login.html是 !DOCTYPE html html langen headmeta charsetUTF-8titleTitle/title /head body h3用户登录/h3 form action/app01/login/ methodpostp用户名input typetext nameusername/pp密码: input typepassword namepwd/pinput typesubmit /form/body /html运行结果登录成功 成功跳转   3.2 使用反向解析  3.2.1  path(login/, views.login, namelogin), 个人觉得还是改的是设计login的地方 没啥卵用 分析首先我们将这个路由不改动的时候 第一步我们是先去解析出路由ulr本句是没使用正则的即是 第二步我们是去在视图函数的login处理一些用户需要的逻辑首先本句是登录根据函数中的逻辑去调用temprate 中的登录模板的然后再次提交数据的时候会调用index完成本次访问。 也就是Django内部的一个执行流程。 小结即是变动的时候我们去改语句中对应的视图函数和对应用到的模板2个地方即可。   当去修改login/ 为login2/会导致很多地方都会修改所以这个时候会利用到别名啦注意用户实际登录的时候还是使用的是login2去登录反向解析只是让内部少做变动。(1)模板中的文件login.html需要改动2视图函数中的login改动在template下修改login.html文件为只需在上面的基础上修改第一行为form action{% url login %} methodpost其中一旦url中配置文件一改变模板文件中的temptate下的login.html 和views视图下的文件也需要跟着去改具体改法如下重点1修改模板temprate中的文件 login.html 运行代码   根据视图函数login可以知道第一次确实是得到页面。 重点2反向解析改动的第二个地方视图函数  # view中的函数 def login(request):if request.method GET:return render(request, login.html)else:username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app01/index/)else:# return redirect(app01/login) 不改动的时候print(reverse(login))return redirect(reverse(login))### 改为这样他会自己根据url中login的变动而变动运行结果是把下面的视图函数中的 print(reverse(login))打印出来的值是  再试一次 先改url中的名字  哈哈 按照逻辑是不会打印的是成功是 index那个页面跳转成功   登录失败看看      3.3 在反向解析的基础上就行传递参数 3.3.1 无名参数 第一在app下的url中代码 urlpatterns [re_path(r^login/([0-9]{2})/$, views.login, namelogin),path(index/, views.index)] 小结即是用户传递的进来的是2位数的参数。   第二 temprate下的form表单就行修改在反向解析的前提下 感觉就是随意放一个参数在后面不多深究 第三 视图view中的加参数 1.相关的login函数是必须加的“ 2.在跳转的地方加上参数 def login(request, pk):if request.method GET:return render(request, login.html)else:username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app01/index/)else:print(reverse(login, args(10,))) # 无名分组return redirect(reverse(login, args(10,))) # 位置传参运行代码必然要输入错误的密码才会打印。问题个人觉得反向定位的这个地方 表单位置 根本不用加12 感觉就是乱加的没啥依据 后续看看   3.3.2有名参数在方向解析的基础上  第一在app01下的url的代码是 urlpatterns [# path(login3/, views.login, namelogin),# 没有参数的时候# re_path(r^login/([0-9]{2})/$, views.login, namelogin),无名分组 顺序传参# 有名分组 关键字传参re_path(r^login/(?Pm[0-9]{2})/$, views.login, namelogin),path(index/, views.index)]     第二 temprate下的form表单就行修改在反向解析的前提下 感觉就是随意放一个参数在后面不多深究 {#form action/app01/login/ methodpost#}# 无名分组时候用的 form action{% url login m12 %} methodpost# 有名分组时候用   第三    视图view中的加参数 1.相关的login函数是必须加的这次有名分组传递的是一个参数 2.看下视图函数中的全部代码 def login(request, m):if request.method GET:return render(request, login.html)else:username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app01/index/)else:# print(reverse(login, args(10,))) # 无名分组print(reverse(login, kwargs{m:07})) # 有名分组# return redirect(reverse(login, args(10,))) # 位置传参return redirect(reverse(login, kwargs{m:07})) # 关键字传参# return redirect(reverse(app01:login)) # 加上名称空间写法# return redirect(app01/login) 不改动的时候# 没有分组 即是没有参数的情况# print(reverse(login))# 这个也也是没有使用分组的情况 但是设计login 反正url路由将其名字改掉使用反向解析# 也就是验证那句话 哪里需要用的到地方都需要改数据只能说使用反向解析去改的话可以一劳永益改一次之后# 无论你在路由怎么改写login1到login 这里都是使用的路由对应url中的别名嘿嘿# return redirect(reverse(login))   运行结果以登录失败的方式进去结果看样子就是对的 有名关键字传参成功    总结 上面的例子中只是在外面套了一层重定向即是再次就行一次跳转而已。 上面登录失败再次登录页面出现。 ## 上面的例子中 登录失败可以是 #return redirect(reverse(login)) # 防止url中访问的地址改名反向解析并跳转至重新登录return redirect(reverse(login, kwargs{m:07})) # 反向解析基础上加上关键字传参最后重定向至重新登录# return redirect(reverse(login, args(10,))) # 反向解析加上位置传参最后重定向至重新登录   登录成功 return redirect(/app01/index/) 反向解析大致 1.定义name 别名 path(login1/, views.login, namelogin), 2.在视图中反向解析 from django.urls import reversereverse(login)无名分组 re_path(r^login1/([0-9]{2})/$, views.login, namelogin), reverse(login, args(12,))有名分组 re_path(r^login1/(?Pmonth[0-9]{2})/$, views.login, namelogin), reverse(login, kwargs{month: 12}) 3.在模板中使用反向解析 path方法(url)# 不使用参数的时候 form action{% url login %} methodpostre_path(无名分组) form action{% url login 12 %} methodpostre_path(有名分组) form action{% url login month12 %} methodpost  4.名称空间 4.1 例子 1.新建一个app02 第一app02中的url代码 from django.urls import path, re_path from app02 import viewsurlpatterns [path(test/, views.test),path(login/, views.login, namelogin), ]   第二app02 中的视图(view中的代码) def login(request):if request.method GET:return render(request, login1.html)else:# print(request.POST)print(request.body)username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app02/test/)else:# print(reverse(login, args(10,))) # 无名分组# print(reverse(login, kwargs{m:07})) # 有名分组# return redirect(reverse(login, args(10,)))# return redirect(reverse(login, kwargs{m:07}))return redirect(reverse(app02:login))   第三同时建立temprate中的模板代码 运行app01/login1/代码发现串了可以在总项目的URl的配置下可以看到 如果是访问各个app下的相同的url 下的login1会发现后面把前面覆盖了。 运行结果 如下 发现登录的是login1窗口弹出的是app02的确实app01的访问的url被覆盖了。  解决办法名称空间  4.2 加命名空间 1.为了出现上面在各个不同的app应用取相同的名字的 只有加上命名空间 第一步 在总项目的url下面加一个 path(app01/, include((app01.urls, app01))), # 加上名称空间app01# path(app02/, include(app02.urls)), # 普通的路由分发path(app02/, include((app02.urls, app02))), # 加上名称空间app02注意include 里面是一个元祖不是一个字符串注意普通的路由分发的写法是 path(app01/, include(app01.urls), # 普通的路由分发path(app02/, include(app02.urls)), # 普通的路由分发  小结即是上面的的写法是名称空间加上普通路由分发的结合写法。    第二步修改视图函数中login中的值(在对应的app的login函数中重定向返回函数的时候加上) def login(request):if request.method GET:return render(request, login1.html)else:# print(request.POST)print(request.body)username request.POST.get(username)pwd request.POST.get(pwd)if username alex and pwd 123:return redirect(/app02/test/)else:# print(reverse(login, args(10,))) # 无名分组# print(reverse(login, kwargs{m:07})) # 有名分组# return redirect(reverse(login, args(10,)))# return redirect(reverse(login, kwargs{m:07}))# return redirect(reverse(login)) 普通的反向解析# 在反向解析的基础上加上名称空间写法return redirect(reverse(app02:login))      第三步在模板中修改一下 在普通的反向解析版本的基础上加上form action{% url app01:login %}这个。妈妈再也不用担心其他的app项目设置的访问rul和我重名啦 这样的话访问app01  中login1 访问app02 中login1 总结 1.名称空间定义名称空间 path(app01/, include((app01.urls, app01))), path(app02/, include((app02.urls, app02))),在conf.py源码的44行 namespace namespace or app_name2.使用名称空间在视图中 reverse(app01:login) 在模板中 form action{% url app01:login %} methodpost   5. 视图层  1.request对象 1.1 reqeust对象的属性 GET(***) 1. GET QueryDict 响应头的内容(url后的参数) 2. 获取一个值 request.GET.get(name) 3. 获取多个值 request .GET.getlist(name) # 返回值为list   POST(***)QueryDict 响应体里的内容body原生请求体的内容path (***)返回当前请求的路径(url)method(***)返回当前请求的请求方式2.1reqeust对象的方法 get_full_path()获取当前请求的完整路径(包含参数,不包含锚点)is_ajax()判断当前请求是否是ajax请求.返回值为布尔值2.HTTPResponse对象(响应三剑客) 2.1HTTPResponse 直接返回字符串,响应体里面的内容 2.2 render 返回一个模板文件第一个参数 request第二个参数 模板文件(login.html)第三个参数(可选) 模板需要渲染的值   2.3 redirect   重定向                                                                          转载于:https://www.cnblogs.com/longerandergou/p/11128027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85955.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重庆网站建设接重庆零臻科技大庆建设网站首页

如何解决Oracle数据库游标连接超出问题发布时间:2020-07-21 10:57:35来源:亿速云阅读:103作者:小猪这篇文章主要讲解了如何解决Oracle数据库游标连接超出问题,内容清晰明了,对此有兴趣的小伙伴可以学习一下…

宣城市市政建设集团公司网站执行信息公开网

来源:雷锋网作者 | 付静1 代表着首次,标志着政府与企业持续合作前往国际空间站的开始。终于,美国太空探索技术公司(SpaceX)的首次正式载人飞行任务拉开大幕!美东时间 2020 年 11 月 15 日 19 时 27 分&…

合肥网站优化选哪家北京网站建设哪里好

文章目录 前言 1 用于ESP32的DroneBridge 2 推荐的硬件 3 下载和烧录固件 4 为ESP32配置DroneBridge 前言 ESP32 是现成的 Wi-Fi 模块,具有完整的 TCP/IP 协议栈和微控制器功能。它们提供专用的 UART、SPI 和 I2C 接口。它们可与任何 ArduPilot 自动驾驶控制器…

网站服务器的DNs怎么查安徽设计公司排名

引言具体不记得是在群里还是什么地方有人问过,.NETCore有没有汉化包,答案是有,目前微软已经为我们提供了.NETCore多种语言的语言包。下面看看如何安装与使用吧。本文介绍:如何安装这些下载的本地化版本。如何修改Visual Studio安装…

网站建设的要点是什么意思阿里云营销网站建设

今日新学了几个基础操作,觉得很有意思,分享给大家。不过真心觉得,有些操作当时学会了,长时间不用,转眼就忘了;另一方面,如果购买相关课程,学着也没什么意思,我前段时间买…

报考建设八大员官方网站常熟做网站多少钱

随着数字农业和智慧农业的发展,基于过程的农业生产系统模型在模拟作物对气候变化的响应与适应、农田管理优化、作物品种和株型筛选、农田固碳和温室气体排放等领域扮演着越来越重要的作用。APSIM (Agricultural Production Systems sIMulator)模型是世界知名的作物生…

江苏建设造价信息网站网站建设课程报告论文

文章目录 三、桥接模式 三、桥接模式 桥接模式(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得实体类…

做商城网站哪里好设计制作活动记录表

数据分析与决策技术丛书 R语言数据挖掘 Learning Data Mining with R [哈萨克斯坦]贝特麦克哈贝尔(Bater Makhabel) 著 李洪成 许金炜 段力辉 译 图书在版编目(CIP)数据 R语言数据挖掘 / (哈…

wordpress.app南昌百度快速排名优化

1 VSS概述 版本控制是工作组软件开发中的重要方面,它能防止意外的文件丢失、允许反追踪到早期版本、并能对版本进行分支、合并和管理。在软件开发和您需要比较两种版本的文件或找回早期版本的文件时,源代码的控制是非常有用的。Visual SourceSafe 是一种…

效果好的网站建设公WordPress在线字体

Linux实操篇 Linux(实操篇三)1. 常用基本命令1.7 搜索查找类1.7.1 find查找文件或目录1.7.2 locate快速定位文件路径1.7.3 grep过滤查找及"|"管道符 1.8 压缩和解压类1.8.1 gzip/gunzip压缩1.8.2 zip/unzip压缩1.8.3 tar打包 1.9 磁盘查看和分区类1.9.1 du查看文件和…

邯郸wap网站建设公司网络推广公司方案

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 Python中import模块导入的实现原理 什么是模块import搜索路径import导入模块的原理图书推荐 专栏&…

网站点赞怎么做社区团购app

注意事项: 1.ELK版本要求5.X以上 2.Elasticsearch5.x版本必须基于jdk1.8,安装环境必须使用jdk1.8 3.操作系统windows10作为测试环境,其他环境命令有差异,请注意 4.本教程适合完全离线安装 5.windows版本ELK安装包下载路径&#xf…

西安 网站建设 培训班外贸网站建设与优化

文章目录 前言本教程解决的问题是:按照本教程方法操作后,达到的效果是想使用群晖生态软件,就必须要在服务端安装群晖系统,具体如何安装群晖虚拟机请参考: 1. 安装并配置synology drive1.1 安装群辉drive套件1.2 在局域…

自己怎样建设网站首页课程设计代做网站php

1、成员变量偏移值 (1) 成员变量偏移值,就是指这个成员变量的地址离对象首地址偏移了多少字节,这个偏移值在编译完成后是不变的。 class Base { public:int b_i;int b_j; };int main() {Base base;printf(" b_i的偏移值:%…

做网站设计需要学什么小学生制作书签

MQTT 核心概念 发布订阅 MQTT 基于发布订阅模式,它解耦了消息的发送方(发布者)和接收方(订阅者),引入了一个中间代理的角色来完成消息的路由和分发。发布者和订阅者不需要知道彼此的存在,他们…

怎样在手机上面建设网站做网站一个月30ip

目录 1.算法思想简介 2.算法应用1:问题一阐述 3.算法应用1:问题一解决 4.算法应用2:问题二阐述 5.算法应用2:问题二解决 1.算法思想简介 #蒙特卡洛算法思想 """ 蒙特卡洛方法的理论其实很类似于概率论中一个比较重…

程序员就是做网站的吗wordpress 标签数量

嗨,各位朋友们,欢迎来到这篇博客!今天我们将一起踏入 Dart 语言的神奇世界,深入了解 Dart 中的 List 类型。不用担心,我会尽可能用最通俗易懂的语言,让你对 List 有一个更深刻的理解。 Dart 中的 List Li…

网站建设商城建设wordpress php配置文件

一、概述 html2canvas是一个HTML渲染器,是一个脚本,它允许你直接在用户浏览器截取页面或部分网页的“屏幕截屏”。底层是基于DOM的,根据页面上可用的信息构建屏幕截图,它没有制作实际的屏幕截图,因此生成的图片并不一定…

美食网站开发前期准备网络运行管理系统

抽象类接口的理解 鲁迅的一句话:总之岁月漫长,然而值得等待。 /* 抽象类中的面试题: 1.一个抽象类中可不可以没有抽象方法:可以,这样做的目的只有一个,就是不让其他类创建本类对象交给子类完成。 2.abstract关键字不能和哪些关键字共存: static final private 接口的概述…