热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

django中url路由配置及渲染方式

今天我们学习如何配置url、如何传参、如何命名、以及渲染的方式,内容大致有以下几个方面。创建视图函数并访问创建appdjango中url规则捕获参数路径转换器正则表达式额外参数渲染


今天我们学习如何配置url、如何传参、如何命名、以及渲染的方式,内容大致有以下几个方面。



  • 创建视图函数并访问

  • 创建app

  • django中url规则

  • 捕获参数

  • 路径转换器

  • 正则表达式

  • 额外参数

  • 渲染方式


创建视图并访问


项目中自带的Python文件中,并没有带有视图,因此我们自己创建一个,通常,我们把视图命名views.py。


然后在views.py中,导入头文件


from django.http import HttpResponse


然后我们在views.py中,写一些Python函数,用来访问



def hello(request): /*request用户的请求 */

return HttpResponse(‘hello,欢迎来到django’)


在url.py中为视图函数配置路由




from django.urls import path
from . import views
urlpatterns = [
path('hello',hello),
]

运行项目,如果上传方式是Ctrl+S的话,记得上传之后再运行,成功后


浏览器输入  127.0.0.1:8000/hello    即可访问到


创建app


创建APP的方式不只一种,在虚拟机里可以创建,也可以在pycharm里创建


命令为:Python manage.py startapp appname


在虚拟机里创建完,要在pycharm中下载下来


在pycharm中创建:


方式一:


项目运行成功后,在terminal里面找到本项目,输入命令 Python manage.py startapp appname



如果没有连接本地,则需要重新连接



方式二:


tool   ---->   run manage.py projectname




startapp appname


此方法也需要下载下来




下载完成后,创建的app就出现了。


url规则


1、网址组成


网址:全球统一资源定位符


https://www.i.cnblogs.com/EditPosts.aspx?postid=10423125


这是本文网址,做个栗子吧


https:// www.i.cnblogs.com/ EditPosts.aspx? postid=10423125


协议     域名                      路径                   参数            


django只搜索路径部分,与其他都无关


2、django的路由系统


当一个请求来到


1、首先到项目目录下,url.py里查找路由规则


2、跟urlconf模块,里面定义了urlpatterns变量


3、按顺序运行每一个,到第一个匹配的模式停止


4、一旦匹配,django导入并调用给定的视图


5、如果没有匹配到,或者中间出错,则返回404


3、path里参数的含义


path(route,view,kwargs=None,name=None)



  •  route   :   (必须有)是一个字符串的url规则

  • view      :  (必须有)是个视图

  • kwargs   :(可有可无)额外参数,是字典类型,传递给view

  • name     :(可有可无)url名字


4、在url中捕获参数


尖括号   <参数  > 可以捕获参数,传递给视图


本来捕获的值是字符串


如果要捕获两个参数,尖括号间可用/斜杠,也可用-连接符,但访问要一致


5、路径转化器


如果想要让捕获的参数符合条件,那么我们会用到路径转化器


符号是冒号   :        eg:


常用的路径转化器


int   :    匹配任意整数


path  :   匹配任意非空字符


str    :   匹配除了 / 路径分隔符外所有字符串


uuid  :  格式化id


sulg   :  匹配任意ASCII字符和连字符及下划线


6、正则表达式


前面我们学习到路径转化器,但是有时候我们的转化器并不能够完全满足我们捕获参数的条件,像int转化器去捕获年份,如果我们传入10000,肯定会捕获呀,但不合理,因此,我们正则表达式可以更好用一些。


使用时,首先要导入进来 form django.url import re_path


参数跟path里相同


下面看正则表达式的方法用什么捕获方式


第一种是分组的,在视图中根据参数名传参


re_path(r'plan/(?P\d\d\d\d)/(?P[0-9]|1[0-2])/',plan),

年  四位数,月  0-9 或者1和0-2


第二种是不分组的,在视图中安位置传参


re_path(r'plan/(\d{4})\([0-9]|1[0-2]/',plan),

\d\d\d\d与\d{4}含义相同,都是四位整数


7.主路由分配给分路由


如果所有是url都在主路由下配置,那么对于检查和维护修改都会带来不便,因此我们需要将主路由分配给各个app下的路由


方式:include()


使用方法:先需要导入,


from django.urls import path,include


使用:   eg,名为teacher的APP,将主路由分给teacher.url


path(‘teacher/’,include('teacher.urls')),


在teacher-APP中,创建urls.py(因为新建的APP没有自带url.py)


在teacher.url.py中,手动输入


form  django.urls import path


from .views import *


这里的views是此APP里的views


    include可以多级使用


include的原理:当遇到include时,路径就被切断,然后在include包含的分路由中开始继续检索。


在path(‘teacher-/’,include('teacher.urls')),里面传参是可以的,就是分路由每个都要传参。


8、传递额外参数


当在路由中传入额外参数时,如果kwargs中key值与捕获参数不一致,按照kwargs为准。




如果在include后,传递的话,那么相当于此分路由各个url后都有此额外参数。


9、app_name的作用


-页面重定向


redirect     可以实现页面跳转


    导入 from django.shortcuts import render,redirect,reverse

使用     return  redirect(‘网址或者路径’)


-reverse


如果给path里加入name参数,reverse(name)就等于前面路径


因此实现页面跳转,可以设变量url=reverse(name的值)     然后return redirect(url)即可实现


-app_name


那我们的name就不可以设为一样的吗?


在不同app下其实可以一样,但需要使用app_name


在url.py里urlpatterns前写


app_name = ‘appname’  


使用:


url=reverse(appname:name)


10、模板系统


HTML源码写到模板文件中


-模板路径设置


在项目中创建templates文件夹,在文件夹内创建跟APP同名的文件夹


主目录下settings.py中找到       然后写入            


TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
...
  }

-渲染


在templates下写的HTML要如何使用呢?


在需要使用的视图中引用


    from django.template.loader import get_template

    from django.shortcuts import render

使用时需要渲染,用render


def new(request):
fg=get_template('student/index.html') 路径从templates往下的开始写
html=fg.render()
return HttpResponse(html)

访问此视图,HTML模板即可被渲染出来


另一种更简便的方法


def new(request):
return render(request,'student/index.html')

这次就到这里,下一篇会深入模板变量哦。




推荐阅读
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 在Python开发过程中,随着项目数量的增加,不同项目依赖于不同版本的库,容易引发依赖冲突。为了避免这些问题,并保持开发环境的整洁,可以使用Virtualenv和Virtualenvwrapper来创建和管理多个隔离的Python虚拟环境。 ... [详细]
  • Python自动化测试入门:Selenium环境搭建
    本文详细介绍如何在Python环境中安装和配置Selenium,包括开发工具PyCharm的安装、Python环境的设置以及Selenium包的安装方法。此外,还提供了编写和运行第一个自动化测试脚本的步骤。 ... [详细]
  • 新手指南:在Windows 10上搭建深度学习与PyTorch开发环境
    本文详细记录了一名新手在Windows 10操作系统上搭建深度学习环境的过程,包括安装必要的软件和配置环境变量等步骤,旨在帮助同样初入该领域的读者避免常见的错误。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 百度搜索结果链接提取工具 UrlGetter V1.43
    该工具专为获取百度搜索引擎的结果页面中的网址链接而设计,能够解析并转换为原始URL。通过正则表达式匹配技术,精准提取网页链接,并提供详细的使用说明和下载资源。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 如何使用PyCharm及常用配置详解
    对于一枚pycharm工具的使用新手,正确了解这门工具的配置及其使用,在使用过程中遇到的很多问题也可以迎刃而解,文中有非常详细的介绍, ... [详细]
  • 解决Python中 'NoneType' 对象无属性 'find_all' 错误
    本文详细探讨了在Python编程中遇到的常见错误——'NoneType'对象没有属性'find_all',并深入分析其原因及解决方案。通过理解find_all函数的工作原理和常见用法,帮助读者避免类似问题。 ... [详细]
  • 本文介绍如何在Java中实现一个罗马数字计算器,重点在于如何通过循环和字符验证确保用户输入合法。我们将探讨创建一个方法来检查字符串中的非法字符,并使用循环不断提示用户输入,直到输入符合要求。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
  • Google排名优化-面向Google(Search Engine Friendly)的URL设计 ... [详细]
  • cJinja:C++编写的轻量级HTML模板引擎
    本文介绍了cJinja,这是一个用C++编写的轻量级HTML模板解析库。它利用ejson来处理模板中的数据替换(即上下文),其语法与Django Jinja非常相似,功能强大且易于学习。 ... [详细]
author-avatar
笨蚂蚁88
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有