# Python网络编程_Django
唯一能够失去的只有现在
文章目录
前言
Django是一个开源代码的Web应用框架,采用了MTV模式,即模型(Model)、模板(Template)、和试图(Views)。模型:负责数据存取层,处理与数据相关的事物;模板:处理与表现相关的决定;视图:存取模型及调取恰当模板的相关逻辑。其简便、快捷的开发数据库驱动的网站,有许多强大的第三方库。以下过程和程序采用python3.7,Django3
三、路由
一个完整的路由包含:路由地址、视图函数、可选变量、路由命名。路由地址即网址,视图函数即App的views.py文件定义的函数。过程是Django从当前请求信息获取路由地址,并在路由列表匹配相应的路由信息,在执行路由信息所指向的视图函数
1.路由定义
第一步,添加在good文件夹里添加一个名为urls的空白.py文件,将所有属于App的路由都写入该文件,首先设置urls.py
from . import views
urlpatterns = [
# path('admin/', admin.site.urls),
path('',views.goods())
]
再设置views.py
# Create your views here.
def goods(request):
value = 'this is test!'
print(value)
return render(request,'index.html')
2.路由变量
为了使一个路由可以代表多个页面,可以设置路由变量,包括:
字符类型:任何非空字符串
整型:匹配0和正整数
slug:注释、后缀、附属
uuid:匹配一个uuid格式的对象
下面重新定义一个路由:
path('<year>/<int:month>/<slug:day>',views.myvariable)
定义处理函数:
def myvariable(request,year,month,day):
return HttpResponse(str(year)+'/'+str(month)+'/'+str(day))
还可以通过地址外定义:
下面重新定义一个路由:
path('',views.goods,{'month':'2019/10/10'}),
定义处理函数:
def goods(request, month):
return HttpResponse('这是变量:'+month)
3.命名空间与路由命名
当网站需要的网页增多,为了更好的管理而设置命名空间与路由命名,一个是在include下,一个是path下。
3.1namespace
path('',include(('goods.urls','user'),namespace='goods')),
path('user/', include(('user.urls','user'),namespace='user'))
作用就是相当于给多个路名、、路由合集命名
3.2name
path('goods',views.goods,name ='goods' ),
path('login',views.userlogin,name='userlogin'),
4.路由使用
4.1地址连接
第一步设置设置path
path('', views.goods),
path('<year>', views.userlogin, name='userlogin')
第二步设置view
def goods(request):
return render(request,'index.html')
def userlogin(request,year):
return HttpResponse('这是变量userlogin'+str(year))
第三步修改html文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello new</title>
</head>
<body>
<span>hello new</span>
<br>
<a href="{% url
'goods:userlogin' '2020' %}">查看年</a>
</body>
</html>
5.反向解析
4.1.reverse
通过路由命名或可调用视图生成路由地址
4.2resolve
通过路由地址获取对象信息
6.路由重定向
在浏览器访问某个网页时直接自动跳转,由其它网址生成相应。