第2节----Django框架之url路由配置及模板渲染

本章节分为2个大的部分

urls.py代码

from django.contrib import admin
from django.urls import path, re_path, include
from . import views

urlpatterns = [
path('admin/', admin.site.urls),
path('index1/', views.index1),#path不传参数
path('index2/<int:pk>', views.index2),#path传参数
re_path(r'^index3/$', views.index3),#re_path不传参数
re_path(r'^index4/(?P<pk>\d+)', views.index4),#re_path传参数
re_path(r'^index5/(\d+)/$', views.index5),#re_path传参数
path('index6/', views.index6,{"a":1}),#kwargs传参
path('student/', include("student.urls")),#include注册
path('index8/', views.index8,name='old'),#name使用
path('index9/', views.index9,name='new'),
path('index10/<int:xx>', views.index10,name='渲染模板'),

]

views.py代码

from django.http import HttpResponse
from django.shortcuts import render,redirect,reverse
from django.template.loader import get_template
def index1(request):
return HttpResponse("<h1>这是path不带参数<h1/>")

def index2(request,pk):
return HttpResponse("<h1>这是path带参数:%s<h1/>" % pk)

def index3(request):
return HttpResponse("<h1>这是一个re_path不带参数<h1/>")

def index4(request,pk):
return HttpResponse("<h1>这是re_path带参数:%s<h1/>" % pk)

def index5(request,pk):
return HttpResponse("<h1>这是<h1/>")

def index6(request,**kwargs):
if kwargs.get("a")==1:
return HttpResponse("<h1>这是kwargs<h1/>")
else:
return HttpResponse("哈哈")

def index8(request):
return redirect(reverse("new"))
# return HttpResponse("<h1>这是一个oldDjango项目<h1/>")

def index9(request):
return HttpResponse("<h1>这是一个新的项目<h1/>")

def index10(request,xx):
t = get_template("student/1.html")
#方式1
# html = t.render()
# return HttpResponse(html)
# 方式2
return render(request,"student/1.html",{"qqq" : "华五"})

 1.index

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1><p>"欢迎使用渲染"</p> </h1>
    {{qqq}}
</body>
</html>

 

一. urls.py路由用法

1.URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。格式如下:

例子:http://127.0.0.1:8000/hello/
URL结构:
schema://host[:port#]/path/.../[?query-string][#anchor]
schema:指定使用的协议(例如:http, https, ftp)
host:Http服务器的IP地址或者域名
port:端口号,http默认是80端口
path:访问资源的路径
query-string:发送给http服务器的数据
anchor:锚点

2.配置url(两种方式:path,re_path)

需要导入from django.urls import path, re_path

path使用格式:

  path("匹配规则",对应的视图views)

re_path使用格式

  re_path(r"正则表达式",对应的视图views)

参数如何捕获?两种方法:

  1.<int:pk>格式,int可换成str,slug,uuid

  path('index2/<int:pk>', views.index2)

  2.(?P<pk>\d+)格式

  re_path(r'^index4/(?P<pk>\d+)', views.index4)

3.kwargs的使用:

urls.py中写入:

path('index6/', views.index6,{"a":1}),#kwargs传参

views.py中写入:

def index6(request,**kwargs):
    if kwargs.get("a")==1:
        return HttpResponse("<h1>这是kwargs<h1/>")
    else:
        return HttpResponse("哈哈")

结果:

4.include注册app

urls.py中写入:

path('student/', include("student.urls")),#include注册使用student下的Urls

app中写入urls写入:

path('index7/', views.index7,{"a":1}),#path不参数

app中写入views.py写入:

def index7(request,**kwargs):
if kwargs.get("a")==1:
print(datetime.datetime.now())
return HttpResponse("这是include")

结果:

5.重定向用于更新了网址啥的跳转

urls.py中写入:

path('index8/', views.index8,name='old'),#name使用用于重定向
path('index9/', views.index9,name='new'),

views.py中写入:

def index8(request):
return redirect(reverse("new"))
# return HttpResponse("<h1>这是一个oldDjango项目<h1/>")

结果:

 

二.渲染模板

 思路:用get_template()函数获取指定的html路径,可以是templates下的文件路径,也可以是app下的templates下的文件路径,前者优先,若前者没搜索到则继续向下搜索知道搜索到为止。

urls.py中写入:

path('index10/<int:xx>', views.index10,name='渲染模板'),

views.py中写入:

def index10(request,xx):
t = get_template("student/1.html")#注意在templates下创建了student,1.index文件
html = t.render({"qqqq":xx})#{"qqqq":xx}不知道有啥用
    return HttpResponse(html)

结果:

 

posted @ 2020-03-24 19:49  faval  阅读(316)  评论(0)    收藏  举报