Django路由中的url浅识

Django路由中的url浅识

Django中路由的URL,基本写法是path(‘home/’,views.home,name=‘home’),path中的3个函数也就是3个部分
#### path('home/',views.home,name='home')
#### path('访问路径',视图函数,url命名)
1,访问路径: 访问视图函数的url路径,拿上述的代码举例,需要访问到views.home函数,假设目前运行服务器的地址是127.0.0.1:8888,那在浏览器中输入127.0.0.1:8888/home/就可以访问到
# App/urls.py   应用的路由文件
from django.urls import path
from App import views
#  应用中的路由界面,注意urlpatterns不能修改,因为需要跟项目中的根路由保持名称的一致才能正常添加
urlpatterns = [
    #  第一个参数是访问的路径,不能以/开头,第二个返回的视图函数,第三个是名称,项目中重定向使用
    path('home/',views.home,name='home'),
]

2,视图函数: 就是这个url路径访问到函数,函数中使用Django的HttpResponse对象返回的数据,就会在界面中呈现
# App/views.py   应用的视图函数文件
from django.http import HttpResponse
def home(request):
    return HttpResponse('This is home page')
记得要映射到Django项目中的url去,否则无法访问

from django.contrib import admin
from django.urls import path, include
urlpatterns = [
    path('admin/', admin.site.urls),
    # 这个位置讲应用中的子路由添加到项目的根路由当中
    path('',include('App.urls'))
]

3,url命名: 这个相当于给这个url添加了一个别名,也就是标识,方便项目有使用到重定向到url的地方,在之后做修改的时候,不需要修改代码中的业务代码
#假设项目中有两个视图函数,一个是首页,一个是登录页,在访问首页时,如果没有携带参数,则跳转到登录页
# App/views.py
from django.shortcuts import render,redirect
from django.http import HttpResponse

# 主页的视图函数
def index(request):
    user_name = False
    try:
        user_name = request.GET.get('user_name')
    except BaseException as e:
        print(e)
    if user_name:
        return HttpResponse('这是首页')
    else:
        return redirect('login/')

# 登录页的视图函数
def login(request):
    return HttpResponse('这个登录页')


路由文件是这么写的
# App/urls.py
from django.urls import path
from App import views
#  应用中的路由界面,注意urlpatterns不能修改,因为需要跟项目中的根路由保持名称的一致才能正常添加
urlpatterns = [
    #  无路径默认的情况下,去访问index这个首页
    path('', views.index),
    #  使用url命名,来给这个path一个标识,方便项目中使用,name就是url的命名,也就是别名
    path('login/',views.login,name='login')
]

上面的写法是没有问题的,但是如果有一天login的访问路径名称要改变,改为signup,那按照上面redirect的填写访问路径的写法,项目中如果有很多地方都这么写,那就全部都需要修改,这个时候如果使用的url命名的方式就不需要修改,只需要将上面的 App/views.py文件修改一下即可
# 使用reverse进行名称反转,获取到真正的访问路径,这样无论路径如何修改,业务代码都不需要修改
# App/views.py
from django.shortcuts import render,redirect
from django.http import HttpResponse

# 主页的视图函数
def index(request):
    user_name = False
    try:
        user_name = request.GET.get('user_name')
    except BaseException as e:
        print(e)
    if user_name:
        return HttpResponse('这是首页')
    else:
        # return redirect('login/')
        # 修改成下面这个即可,reverse中的参数就是url中name的名称.
        return redirect(reverse('login'))

# 登录页的视图函数
def login(request):
    return HttpResponse('这个登录页')


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值