首页 > 其他分享 >1102.url路由及模版渲染方式

1102.url路由及模版渲染方式

时间:2023-04-29 17:13:21浏览次数:34  
标签:views url 模版 py 1102 urls import path

一、url基本概念及格式

1. URL概念

URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。

2. URL格式

http://127.0.0.1:8000/hello/

URL解释:

schema://host[:port#]/oath/.../[?query-string][#anchor]

schema:指定使用的协议(例如:http,https,ftp)

host:Http服务器的IP地址或者域名

port:端口号,http默认是80端口

path:访问资源的路径

query-string:发送给http服务器的数据

anchor:锚点#

3. urls.py作用

URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码。url的加载就是从配置文件中开始。

4. url例子

项目目录下url.py文件

项目目录下创建的views.py文件

5. url分析

只有访问的url(127.0.0.1:8000/hello/)跟后台配置的url一致时,才会调用url对应的视图函数(下图中1~4编号项目)。

二、path和re_path

1. path基本规则

path('test/<xx>/', views.test)      使用尖括号(<>)从url中捕获值。包含一个转化器类型(converter type)没有转化器,将匹配任何字符串,当然也包括了/字符;当前面的url匹配成功后,就会调用后面的视图函数。

默认支持的转换器:

str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式;

int:匹配正整数,包含0;

slug:匹配字母、数字以及横杠、下划线组成的字符串;

uuid:匹配格式化的uuid,如075194d8-6886-417c-r8r8-6a931w272g00;

path:匹配任何非空字符串,包含了路径分隔符;

转换器的使用:

①设置url:   path('test/<int:xx>/', views.test3)

②在视图中将获取到的参数和参数的类型打印出来:红色字符参数名需要一致。

def test3(request, xx):
    print(xx, type(xx))
    return HttpResponse('Hello %s'%xx)

2. re_path正则匹配

    re_path('^hello/$',views.test5),

    re_path('^hello/(?P<yy>[0-9]+)/',views.test6),
def test5(request):
    return HttpResponse('这是用的re_path设置的')

def test6(request,yy):
    print(yy,type(yy))
    return HttpResponse('hello %s'%yy)

3. include使用方式

include的作用:一个project有一个总的urls.py,各个app也可以自己建立自己的urls.py,用include()函数在project的urls.py文件进行注册

项目urls.py文件

from django.contrib import admin
from django.urls import path,include
from . import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/',include('book.urls')),
]

app urls.py文件

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

app views.py文件

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
    return HttpResponse('这个book的首页!!')

4. kwarge的作用

传递一个Python字典作为额外的参数传递给视图函数。

 

# 主urls.py文件
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/',include('book.urls'),{'switch':'true'}),
]
# APP books里面的views.py
from django.http import HttpResponse
import datetime
def index(request,**kwargs):
    if kwargs.get('switch') == 'true':
        print(datetime.datetime.now())
    return HttpResponse('这个book的首页!!')

5. name的作用

作用:name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果去名字了,就不要做任何改动了。

给一个匹配的url地址取名字,一般用于模版,也可以使用reverse进行页面重定向

案例:

三、模版路径配置

 1. 在主目录下创建一个templates目录用来存放所有的html的模板文件;

2. templates目录里面在新建各个以app名字命名的目录来存放各个app中模板文件

3. 同时需要将templates添加到settings.py文件TEMPLATES的DIRS中

四、模版渲染方式

1. 直接将html字符串硬编码HttpResponse中

2. django.templates.loader定义了函数以加载模版

3. 使用render进行渲染

render方式django封装好用来渲染模版的方式,很方便好用!!!

标签:views,url,模版,py,1102,urls,import,path
From: https://www.cnblogs.com/lxinghua/p/17364221.html

相关文章

  • css cursor: url 自定义鼠标光标遇到的坑
    1、大小不能大于32*32(切记)本人就是在这个上面栽了很久,一直出不来2、最好是ico,cur格式3、使用绝对路径4、在逗号后面加通用游标,如官网所写 示例:map.style.cursor="url('/img/cursor.ico'),pointer";附:在线修改图片大小网址:在线图片大小修改器,图片尺寸修改,格式转换【免费】png等......
  • js url urlencoding,乱码,编码,解码,编解码
    %25%37%DD上述形式不是乱码。这是urlencoding。可以使用js内置的方法encodeURIComponent进行编码再使用decodeURIComponent把上述形式再解码为普通字符对付火狐的自动编码有特效黑色头发:http://heisetoufa.iteye.com/......
  • JS通过axios提交application/x-www-form-urlencoded类型的数据
    使用axios提交类型为application/x-www-form-urlencoded数据的正确姿势:letformData=newURLSearchParams()formData.append('param1',param1)formData.append('param2',param2)axios({url:'http://xxx.xxx.xxx.xxx/xxx',method:'......
  • html文件中使用vue3+element-plus开发模版
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname="viewport"content="w......
  • 解决Python中报错RequestsDependencyWarning: urllib3 (1.26.9) or chardet (5.1.0)/c
      在运行requests包时,出现了以下报错信息:RequestsDependencyWarning:urllib3(1.26.9)orchardet(5.1.0)/charset_normalizer(2.0.12)doesn'tmatchasupportedversion!warnings.warn("urllib3({})orchardet({})/charset_normalizer({})doesn'tmatchasu......
  • Django框架——路由分发、名称空间、虚拟环境、视图层三板斧、JsonResponse对象、requ
    路由分发#Django支持每个应用都可以有自己独立的路由层、静态文件、模版层。基于该特性多人开发项目就可以完全解耦合,之后利用路由分发还可以整合到一起多个应用都有很多路由与视图函数的对应关系这个时候可以拆分到各自的路由层中使用路由分发之前总路由直接是路由与视图......
  • java通过url得到文件对象(支持http和https)
    文字标题:java通过url得到文件对象(支持http和https)作者:锅巴1.场景:通过一个url地址来得到一个文件,此方式就是通过一个url将文件下载到本地的临时文件,直接上代码/***远程读取文件**@paramnetUrl*@return*/publicstaticFilegetNet......
  • Java代码虾皮item_search-根据关键词获取商品列表 API 接口(title商品标题、pic_url宝
     Shopee是东南亚最大的电商平台之一。Shopee拥有商品种类,包括电子消费品、家居、美容保健、母婴、服饰及健身器材等。做好shopee店铺需要注意以下几点:1.选择优质的产品2.每日上新产品3.营销策略4.引流策略5.发货的地点Java代码操作示例importjava.io.BufferedReader;impo......
  • Nginx配置vue项目模版
    1、hash模式时(#),nginx配置方法location~^/test/cms-h5/{rewrite^/test/cms-h5(.*)$$1break;root/opt/nginx/web/cms-h5/dist;}2、hisotry模式时,nginx配置方法location~^/test/cms-h5/{try_files$uri@cms-h5;}location@cms......
  • 一个神奇的小工具,让URL地址都变成了"ooooooooo"
    发现一个很有创意的小工具网站,如封面图所示功能很简单,就是将一个URL地址转换为都是ooooooooo的样子,通过转换后的地址访问可以转换回到原始地址,简单流程如下图所示。转换的逻辑有点像短链平台一样,只不过这个是将你的URL地址变的很长长长长,但是看着都是ooooooooo,很好奇是如何实现......