Django

  1. 路由分配设置
  2. re_path正则匹配
  3. include总路由设置
  4. url额外参数的传递
  5. name的使用
  6. 模板的渲染:render方法

 

路由的分配中,

可以设定相应的转换器加以约束,比如只能输入数字,特殊符号。。

形如

from django.urls import path
from . import views urlpatterns = [
path('hello/<int:age>/<name>/', views.hello),
]

设置views以查看结果:(参数格式不正确的话,会无法显示网页)

from django.http import HttpResponse
# Create your views here. def hello(request, age, name):
return HttpResponse('%d岁的%s, 正在学习Django'%(age, name))

类似的还有:

  • str,匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式
  • int,匹配正整数,包含0。
  • slug,匹配字母、数字以及横杠、下划线组成的字符串。
  • uuid,匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。
  • path,匹配任何非空字符串,包含了路径分隔符

 

 re_path正则匹配(了解即可,推荐path方法)

from django.urls import path, re_path
from . import views urlpatterns = [
re_path('^hello/$', views.hello),
re_path('^hello/(?P<yy>[0-9]+)/', views.hello),
]

?p: 固定写法

 include总路由设置

在总的项目文件夹下,urls.py一般这样设置:(因为每个app里面都会有很多的路由,这样分类比较方便)

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

然后再app中urls.py中设置:

from django.urls import path
from . import views urlpatterns = [
path('hello/<int:age>/<name>/', views.hello),
]

最后在对应app中设置views.py:

from django.http import HttpResponse
# Create your views here. def hello(request, age, name):
return HttpResponse('%d岁的%s, 正在学习Django'%(age, name))

url参数的传递

urls.py:

from django.urls import path
from . import views urlpatterns = [
path('hello/<int:age>/<name>/', views.hello, {'key': True}),
]

views.py:

from django.http import HttpResponse
# Create your views here. def hello(request, age, name, **kwargs):
if kwargs['key']:
print('True')
return HttpResponse('%d岁的%s, 正在学习Django'%(age, name))

 name的作用:

在url的路由配置中加上一个name的设置的话,在使用到url的路径时,都可以用name的别名代替,减少路由修改和维修的代价

主要应用在页面重定向

模板页面的href跳转({%  url 'url_name' %})

urls.py

from django.urls import path
from . import views urlpatterns = [
path('old/', views.old_page),
path('new/', views.new_page ,name='new'),
]

views.py

from django.shortcuts import render, redirect, reverse
from django.http import HttpResponse
# Create your views here. def old_page(request):
# return HttpResponse('there is a <b>old</b> page')
return redirect(reverse('new')) def new_page(request):
return HttpResponse('there is a <b>new</b> page')

这样在访问老的页面时,就会自动跳转到新的页面,不再写入url的路径

name的作用:

name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。

这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

模板的渲染:render方法

在项目总的大环境下,新建规定的文件名:templates

在配置文件settings.py中,添加templates到模板配置TEMPLATES中:这样app中就可以使用了模板了

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',
],
},
},
]

templates文件夹中新建对应app数目,对应名字的文件夹(这样方便使用,非硬性),新建html文件,以便views渲染

html:(随意写入)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>首页</title>
<style>
* {
background-color: lightgoldenrodyellow;
margin: 0;
padding: 0;
}
</style>
</head>
<body>
<h1 style="text-align: center">welcome to my home!</h1><br><br>
<p style="text-align: center; color: royalblue">what do you want?</p>
<a href="{% url 'old' %}">name作用:old页面之无力回天</a><br>
<a href="https://www.baidu.com">有啥不懂得问我</a>
</body>
</html>

html代码划线处是name的第二个常用处

urls.py:

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

views.py:

def show_views(request):
return render(request, 'book/book_index.html')

访问页面:

name的作用,点击还是会被重定向到new页面

Django——2 路由分配设置 re_path正则匹配 include总路由 url传参 name使用 模板渲染render方法 模板渲染方法的更多相关文章

  1. Django(五)1 - 4章实战:从数据库读取图书列表并渲染出来、通过url传参urls.py path,re_path通过url传参设置、模板语法

    一.从数据库读取图书数据并渲染出来 1)app1/views.py函数books编写 [1]从模型下导入bookinfo信息 [2]从数据库获取图书对象列表 [3]把获取到的图书对象赋值给books键 ...

  2. js:通过正则匹配获取页面的url中的参数

    简介:获取页面参数 原生js: //通过正则匹配获取当前页面的url中的参数 function getUrlParam(name){ var reg = new RegExp("(^|&am ...

  3. PHP正则匹配邮件地址、URL

    匹配邮件 #^[A-Za-z0-9]+[\w\.-]*@[A-Za-z0-9]+[A-Za-z0-9\.-]*[A-Za-z0-9]$# 注意 1. \w 表示的是 [A-Za-z0-9_] 包括下划 ...

  4. vue 路由 URL传参

    源码如下: import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) //全局使用该组件 const ro ...

  5. 02-url路由分配及模板渲染方式

    本章主要内容 1.url基本概念及格式 2.path和re_path 3.模板路径配置 4.模板渲染方式 1.url基本概念及格式 URL(uniform Resoure Locator)统一资源定位 ...

  6. 初学django框架 (urls,include子路由,render模板渲染)(一)

    一.urls url的使用为了告诉django哪个url调用那一段代码 如上左图所示,后面的test,test1如下图所示,为视图函数,通过前面的路径,调用后面函数的代码: 只有输入正确的url才会在 ...

  7. Python - Django - form 组件内置的正则校验器

    app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...

  8. vue初始化、数据处理、组件传参、路由传参、全局定义CSS与JS、组件生命周期

    目录 项目初始化 组件数据局部化处理 子组件 父组件 路由逻辑跳转 案例 组件传参 父传子 子组件 父组件 子传父 子组件 父组件 组件的生命周期钩子 路由传参 第一种 配置:router/index ...

  9. vue父子组件路由传参的方式

    一.get方式(url传参): 1.动态路由传参: 父组件: selectItem (item) { this.$router.push({ path: `/recommend/${item.id}` ...

随机推荐

  1. ubuntu多版本jdk安装及切换

    系统:ubuntu14.04 一.安装openjdk1.7 sudo apt-get install openjdk-7-jre openjdk-7-jdk 安装完成后找到其安装路径: dpkg -L ...

  2. android后台input命令模拟按键【转】

    本文转载自:http://www.cnblogs.com/sh1o2os/archive/2013/02/05/2893201.html 有时做开发时,我们使用的触摸屏没有虚拟按键(HOME.BACK ...

  3. 手把手教你把Vim改装成一个IDE编程环境(图文)【转】

    本文转载自: http://blog.csdn.net/wooin/article/details/1858917

  4. bzoj3240 [Noi2013]矩阵游戏——费马小定理+推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3240 n 和 m 太过巨大,不难想到应该用费马小定理什么的来缩小范围: 总之就是推式子啦,看 ...

  5. JSP-Runoob:JSP Session

    ylbtech-JSP-Runoob:JSP Session 1.返回顶部 1. JSP Session HTTP是无状态协议,这意味着每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会 ...

  6. sql简单学习---备忘

    2:Hibernate public boolean deleteFlowerById(int id) { Session session = sessionFactory.openSession() ...

  7. Gold Coins

    http://poj.org/problem?id=2000 #include<stdio.h> ; int main() { int coin[N]; ,j,k; j = ; k = ; ...

  8. js将字符串中所有反斜杠\替换成正斜杠/

    区分正斜杠与反斜杠: 正斜杠:http://.http紧跟着的斜杠,离手输入最近的斜杠,shift中间斜杠.45度角斜杠.正斜杠不需要转义 反斜杠:回车与空格之间.程序表示时需要转义成\\. str. ...

  9. flask 三剑客

    1.flask中的httpresponse @app.route("/") # app中的route装饰器 def index(): # 视图函数 return "Hel ...

  10. Android:EditText属性大全

    一.inputType属性inputType属性在EditText输入值时启动的虚拟键盘的风格有着重要的作用.比如有时需要虚拟键盘只为字符或只为数字. <span style="fon ...