- url格式
协议 域名 路径 参数
http://www.baidu.com:端口/路径?参数 - url设置
url文件配置
path('test/<int:xx>/',views.test)
视图函数
def test(request,xx):
HttpResponse('hello %s '% xx)
- include()作用
在一个项目中,有一个总的urls.py控制调节整个项目,每个项目APP都有一个属于自己的urls.py。include()在总urls.py文件中注册与项目app中的urls.py关联起来。 - include()例子
# 主目录下的urls.py book为APP名字
from django.contrib import admin
from django.urls import path,include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include('book.urls')),
]
# app book下面的urls.py
```python
from django.urls import path
from . import views
urlpatterns = [
path('index/',views.index),
]
# app book下面的views.py
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('这个book的首页!!')```
- kwargs的作用
转递一个python的字典作为额外的参数传递给视图函数
# 主urls.py文件
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('admin/', admin.site.urls),
path('book/',include('book.urls'),{
'switch':'true'}),
]
# {'switch':'ture'}为字典参数
# 使用字典参数kwargs时views.py中的函数都需要添加**kwargs的参数
# app book 下面的views.py
from django.http import HttpResponse
import datetime # 时间方面的模块
def index(request,**kwargs):
if kwargs.get('switch') == 'true': # get方法通过键取值
print(datetime.datetime.now()) # 打印当前的时间
return HttpResponse('这个book的首页!!') # 返回页面
- 重定向
就相当如果有一个网站,需要维护现在转移到另一个新的页面,让原来的url依旧有用。实质就是通过在原来旧页面跳转到新页面曲。
# 页面重定向例子
app book下面的urls.py
from Django.urls import path
from . import views
urlpatterns = [
path('index/',views.index),
# 通过name可以为url取一个新名字 就算更改了对应的url,用原来的url依旧有用
path('test/',views.test,name='test')
path('test_new/',views.test_new,name='test_new')
]
# app book里面的views.py
from django.shortcuts import render, reverse, redirect
from django.http import HttpResponse
import datetime
def index(request,**kwargs):
if kwargs.get('switich') == 'ture':
print(datetime.datetime.now())
return HttpReponse('这个book的首页')
def test(request, **kwargs):
if kwargs.get('switch') == 'true':
# reverse()函数解析test_new的url
# redirect()函数通过解析出来的地址进行跳转到对应的地址
return redirect(reverse('test_new'))
return HttpResponse('这是文章的首页')
def test_new(request, **kwargs):
return HttpResponse('这是新的文章首页')