django学习笔记2-url路由及模板渲染方式

1 URL定义

URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
URL格式如下:
url格式
URL解释:
schema://host[:port#]/path/…/[?query-string][#anchor]
schema:指定使用的协议(例如:http, https, ftp)
host:Http服务器的IP地址或者域名
port:端口号,http默认是80端口
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点#

2 urls.py路由设置

文件位置
在项目根目录下有urls.py和views.py,同时在每个app中也有相应的urls.py和views.py。

#项目生成命令:
django-admin startproject 项目名
#app生成命令
python manage.py startapp app名称

在这里插入图片描述

2.1 urls.py的作用

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

2.2 导入响应模块
from django.urls import path,include,re_path
from . import views

path和views是必须导入,include是包含app路由用到,如果用到正则判断变量的时候导入re_path。

2.3 path的语法规则

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

  • route:字符串,url规则,为url路径部分内容

  • view:视图,在views里找到对应的视图函数,在网页上显示设计好的内容

  • kwargs:额外参数,为一个字典

  • name:url的命名

#项目urls.py中路由设置
urlpatterns = [   
    path('admin/', admin.site.urls), #此为系统测试主页
    path('index/',views.index), #其中index/为url路径部分,views.test则指向views.py中index函数
    path('teacher/',include('teacher.urls')), 将teacher/映射到teacherapp下的urls
]
#teacerapp中urls.py中路由设置
urlpatterns = [   
    path('index/',views.index,name = 'index'), #由于项目中映射的设置,teacher/index/指向了teacherapp中views.py中的index函数,由于name的设置,无论index/路径如何变化,比如需要修改成aaa/,路由中关于index并不需要改变(虽然url变了),仍然指向该view函数
    ]
#关于kwargs
path('detail/<int:id>/', views.detail), # url捕获参数
path('detail/', views.detail, kwargs={'id': 15}),  # 额外参数传参
path('detail/<int:id>/', views.detail, kwargs={'id': 15}),  # 当kwargs中key与url捕获中的key一致的话,以kwargs为准

3 views.py视图函数

3.1导入模块
from django.http import HttpResponse 
from django.shortcuts import reverse,redirect,render
  • HttpResponse在网页直接显示文本内容,类似于python中print的作用,用于调试
  • reverse解析地址,用于debug调试
  • redirect重定向,直接输入一个网址,进入该网址
  • render渲染html模板文件,最重要的,第一个参数必须为request
3.2 模板函数示例
def index(request):
    now = datetime.now()
    now = now.strftime('%Y年%m月')
    lt =[1,2,3]
    dt ={'name':'tiger','age':18}
    students= [
        {'name':'tiger','age':18,'sex':'男'},
        {'name':'cat','age':16,'sex':'女'},
        {'name':'dog', 'age': 20, 'sex': '男'},
    ]
    def func():
        return '函数'
    return render(request,'teacher/index.html',context={
    'now': now,
    'lt': lt,
    'dt': dt,
    'func': func,
    'students':students,
    })
def detail(request,name):
    return HttpResponse(f'这是{name}同学的详情')

重点:

  1. 视图函数中可以定义变量,通过context参数使这些变量可以在html模板文件中通过{{变量}}的形式引用,同时这些变量可以被自定义标签通过take_context引用
  2. 视图函数可以设置参数如name,在设置参数数必须在路由设置中有对应的设置,可以用kwargs参数
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值