Django框架学习(1):url路由以及模板渲染方式

url路由分配以及模板渲染方式


一,url基本概念和格式
​ 1.1,基本概念

​ 是一个网址,全球统一资源定位符,作用:用来标识互联网上资源的地址。

​ 1.2,格式

在这里插入图片描述

二,django的路由系统(url配置)
2.1,路径访问出错在这里插入图片描述

三,path和re_path(在新的app里面则需要自己创建一个urls.py文件)

​ 3.1,path
# 1,基本格式
urlpatterns = [
    path('admin/', admin.site.urls, kwargs=None, name=None)
]

# 2,从url中传入参数
path('detail/<name>/', views.detail)	# 在路径的后面使用<>进行参数捕捉,<>里写参数

# 3,路径转换器(默认str类型)
path('detail/<int:name>', view.detail)  # 插入的name必须是数字

# 4,在路径中传入多个参数
path('detail/<int:id>-<str:name>/', views.detail)	# 写法一
path('detail/<int:id>/<str:name>/', views.detail)	# 写法二
3.2,re_path
# 1,基本格式
urlpatterns = [
    re_path('admin/', admin.site.urls, kwargs=None, name=None)
]

# 2,使用正则表达式
re_path(r'student/(?P<id>\d+)/(?P<name>[a-z]+)', views.student)
# ?P是给分组命名,<>里面写参数名,后面写正则表达式,用来匹配<>里的东西
​ 3.3,include(访问其他app的urls)
# 1,在根urls.py文件的path下用include把其他APP的路由导入
path('student/', include('student.urls'))
# 当访问student的时候回跳转到student这个app下的urls下
# 注意,如果在根目录下传参,必须在每个App下都设置能传参的视图函数
​ 3.4,kwargs(默认给参数,最高优先级)
path('student/', include('student.urls')),
    path('hello/<name>', views.hello, kwargs={'name': 'xyb'})
    
def hello(request, name):
    return HttpResponse('{}是多余的'.format(name))
# 若已经定义了kwargs,后面再传入的参数不生效,kwargs先生效
​ 3.5,name
from django.shortcuts import render, reverse, redirect

path('login/', views.login)
def login(request):
    return redirect('https://www.baidu.com/')
# 重定向,当访问login时,跳转到百度的页面

path('login/', views.login)
def login(request):
    return redirect('hello/')
# 当访问login/时,会直接跳转到根目录下的hello的视图,不灵活,主路径改了都得改

path('hello/', views.hello, kwargs={'name': 'xyb'}, name='hahaha')	# 命名成hahaha
def login(request):
    return redirect(reverse('hahaha'))     	# 动态解析路径
# 当访问视图函数login的时候自动跳转到当前App命名为hahaha的路径

​ 3.6,app_name

# 在每一个APP的url配置里前面加上app_name = App名
app_name = 'student'
def login(request):
    return redirect(reverse('student:liu'))
# 代表了student下的index,不会和同名的重复
# 也可以用这个动态解析app_name跳到别的App下的视图函数内
​ 3.7,路由系统原理
1,从根url里面找,找到第一个匹配到的路径,再到其对应的视图函数里
2,从根url里面找,通过include跳到对应的App下的路由里,再找路径,再去对应的视图函数
3,若找不到返回404
四,django模板路径配置
​ 1),放在根目录下的templates设置
# 1,在根目录CRM创建一个templates(工用)文件夹,专门用来放置模板
# 2,设置seting.py文件里面的TEMPLATES里面的'DIRS':
'DIRS': [os.path.join(BASE_DIR, 'templates')]
​ 2),单独放在App下的templates
# 1,创建一个新的App,把他下载到pycharm中
python manage.py startapp App名
# 2,确认seting.py文件里面的TEMPLATES里'APP_DIRS': True(允许访问app下的templates)
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'student'  # 把你的app名添加到这里,前提是这个app里有templates
]
五,django模板渲染方式
from django.shortcuts import redirect, reverse, render
from django.template.loader import  get_template

def html(request):
    t = get_template('student/index.html')
    html = t.render()
    return HttpResponse(html)
# student为根目录templates文件夹下面的App,在通过HttpResponse返回页面

urlpatterns = [
    path('index/', views.index)
]
def index(request):
    return render(request, 'student/index.html')
# 更加简便的方法
# 导入当前app下的templates下的模板
def index(request):
    return render(request, 'index.html')

在这里插入图片描述

# 导入根目录下的templates下的模板
def index(request):
    return render(request, 'student/index.html')

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值