Django路由简单使用
项目创建完成之后,框架会自动创建一个根路由,就是urls.py文件,这个路由是整个项目根路由,而为了方便管理应用中自身的路由,我们可以在应用中创建路由文件来管理应用的路由.然后合并到项目中使用即可
应用中的路由文件,我们要这么写
# App/urls.py
from django.urls import path
from App import views
# 应用中的路由界面,注意urlpatterns不能修改,因为需要跟项目中的根路由保持名称的一致才能正常添加
urlpatterns = [
# 第一个参数是访问的路径,不能以/开头,第二个返回的视图函数,第三个是名称,通过名称访问路由也是可以的
path('home/',views.home,name='home')
]
写好路由文件之后,我们需要写这个路由返回的视图函数,在views.py文件中来写
# App/views.py
from django.shortcuts import render
# 导入Django的HttpResponse函数
from django.http import HttpResponse
# Create your views here.
# 该函数名称,与路由中视图函数名称相同,注意第request参数必须写
def home(request):
# 当访问到home这个路由时,返回对应的内容
return HttpResponse('This is home page')
上面的代码写好之后,还是访问不到home这个路由,因为还没有添加到项目的根路由中,需要把应用中的路由添加到项目的根路由文件中
from django.contrib import admin
# 引入需要的模块
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# 这个位置将应用中的子路由添加到项目的根路由当中,注意第一个参数是空字符,就是直接端口号后面跟路径即可访问到子路由界面,如
#127.0.0.1:8888/home/
path('',include('App.urls'))
# 如果不是空,就是将路径加上
#127.0.0.1:8888/index/home/
path('index/',include('App.urls'))
]
然后通过IP端口与路径就能访问到我们的视图函数,并且在界面中呈现
将参数通过url的方式传给视图函数,首先在应用的views.py文件中定义一个视图函数,除了第一个参数是Django框架必须有的之外,再增加一个形参.并且增加到字符中返回
# App/views.py
from django.shortcuts import render
from django.http import HttpResponse
def home(request):
return HttpResponse('This is home page')
# 带参数的视图函数
def home_detail(request,detail_id):
text = 'detail_id is %s' % detail_id
return HttpResponse(text)
然后跟之前一样,将视图函数添加到路由中,也就是应用下的urls.py文件
from django.urls import path
from App import views
# 应用中的路由界面,注意urlpatterns不能修改,因为需要跟项目中的根路由保持名称的一致才能正常添加
urlpatterns = [
# 第一个参数是访问的路径,不能以/开头,第二个返回的视图函数,第三个是名称,通过名称访问路由也是可以的
path('home/',views.home,name='home'),
# 注意此处的detail_id必须与视图函数中的参数名称相同,否则会报错
path('home/<detail_id>/',views.home_detail)
]
然后我们再次运行,在url后面加上内容,界面就会返回写好的试图函数,并且将参数拼接的字符串一起返回,33333就是参数,我们改变这个参数,返回界面就会同时改变
将参数以字符查询的方式传递给视图函数,在views.py文件中添加一个视图函数,并且以request对象get的方法获取参数并返回
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def home(request):
return HttpResponse('This is home page')
# 带参数的视图函数
def home_detail(request,detail_id):
text = 'detail_id is %s' %detail_id
return HttpResponse(text)
# 通过字符串查询方式的视图函数
def home_str_query(request):
# 通过request对象来获取url上的字符参数
id = request.GET.get('id')
# 或者以request.GET['id'] 这种方式获取也是可以的
text = '字符串的id是 %s' %id
return HttpResponse(text)
在添加到urls.py路由文件中的时候,就不需要增加参数名称在路径上.直接添加上去即可
from django.urls import path
from App import views
# 应用中的路由界面,注意urlpatterns不能修改,因为需要跟项目中的根路由保持名称的一致才能正常添加
urlpatterns = [
# 第一个参数是访问的路径,不能以/开头,第二个返回的视图函数,第三个是名称,通过名称访问路由也是可以的
path('home/',views.home,name='home'),
# 路径参数访问
path('home/<detail_id>/',views.home_detail),
# 字符查询方式访问
path('str_query/',views.home_str_query)
]
在通过浏览器访问的时候,在访问路径后面加?参数名=参数 这样访问即可
>/',views.home_detail),
# 字符查询方式访问
path('str_query/',views.home_str_query)
]
在通过浏览器访问的时候,在访问路径后面加?参数名=参数 这样访问即可