url路由

1.pycharm启动项目配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意,这个第二个界面就是点第一个页面的小灯泡来的。
在这里插入图片描述
成功了。

2.创建应用

在这里插入图片描述
首先要在CRM文件下创建一个py文件,这里的命令的意思是假如给我一个请求(就是登录网址)我会做出什么反应。
在这里插入图片描述
这是第二步,这个就是路由文件,首先这个点就是导入家目录下刚才创建的views文件,然后添加路径就可以了,path中前面是一个字符串,这个就是在网页中的时候需要添加在网页上的后缀,而后面的就是要在views文件中要调用的函数名,这里要记住一点,这个函数名不要有括号,因为这不是函数调用。
在这里插入图片描述
在这里插入图片描述
这就是创建的应用。

3.url配置

首先url就是我们常说的网址,比如我的博客
https://blog.csdn.net/ZXCNIUBI?orderby=ViewCount
1.这里的https://就是协议
2.blog.csdn.net这个就是域名,或者像www.baidu.com就是域名
3.ZXCNIUB 这个是路径
4.orderby=ViewCount 问号后面的就是我们前端要想后端传输的数据内容。

3.1路径

在这里插入图片描述
这里的<>中间可以实现传参功能,当然得和views中的参数一一对应
在这里插入图片描述
这里需要注意几个点,首先是detail中传参过程中request一定要有,然后后面得参数必须和urls中的参数是统一的。
在这里插入图片描述
当你在网址中输入的时候,不仅要输入/detail,也要输入后面的值,就是类似与这种格式。
在这里插入图片描述

效果就是这个样子。
在这里插入图片描述
当然我们可能会限制一下参数的类型,默认的类型就是字符串,但是我们就想用数字呢,我们就需要通过int:这样的形式来限制。

3.2 通过正则来控制路径

在这里插入图片描述
首先我们要导入一个模块,这个模块就是re_path,然后解释一下?P相当于给这个参数命名了,后面就可以通过正则表达式来限制条件,比如这个年必须是4位,月必须是从1到12等等。
在这里插入图片描述
当然我们还要通过在我们自己建立的views中设置参数来接收,当然这种也是通过路径来改变的
在这里插入图片描述

3.3 kwargs的方式

这种通过kwargs来控制的是通过键值对的方式改变的
在这里插入图片描述
当然我们也要设置一个参数来接收它,这里可能有个问题,就是前面有一个是通过路径来控制的参数的传递的方式,但是这个也是,那假如我两个我都想用呢,会发生什么呢,我先告诉答案吧,当两个同时使用且为同一个名字的时候会kwargs的方式会优先使用。
在这里插入图片描述
在这里插入图片描述
我们会发现写的是llala,但是还是以后面的为优先的。

3.4 重定向redirect

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里要注意的是在我们views中我们如果写跳转路径一定要在前面加上一个/,这个/的意思是代表了之前的路径,然后会以新的路径就是我们返回的路径来重新访问内容。
这个是首先要导入的模块,这个可以实现地址的变换,当然这种方式我们是不提倡使用的,为什么呢,因为我们实际使用中,一旦前面的路径发生改变我们就会发现不对劲了,后面也得跟着改,但是如果我们在做一个项目的时候我们不可能全部改变,工作量太大,我们就需要一种新的方法来使用,就是name方法。
在这里插入图片描述
在这里插入图片描述
我们只需要把需要被跳转到的页面的后面参数位置加上name即可,然后在我们重定向的位置上加上name的字符串即可。

3.5 导入app文件

导入文件首先就是创建文件,而创建文件我们在前面也说过了,所以我们先创建了一个app叫teacher。
在这里插入图片描述
首先我们需要导入模块,这有个小技巧,其实python有个很好的功能就是前面有个小灯泡,你直接点击就可以直接写入模块了
在这里插入图片描述
这个就是创建的app下面的urls,这个路由需要通过我们之前的路由把代码复制一下就可以了,然后其实东西都是一样的,之后还是在app下面的views中写入def之后调用就可以了,当然如果我们想传入参数呢?
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以实现参数的传递了,但是这就有一个问题,对于一个app文件来说,我们可能有很多个def,那不是每一个def都需要这个参数,就比如我们还要一个叫lalal的def,我们不想要这个参数还不行,但是我们真的不需要这个参数,所以这个方法我们发现就行不通了。当然对于kwargs也是一样的,都是行不通的,所以我们需要换一种方法来实现这个功能了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
就是我们不在主文件的路径中去传递参数而是在app中去传递参数。就是上面的图片所展示的效果。
接下来我也不演示错误的例子了,我直接给出标准的写法

"""CRM URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index_one/', views.index, name='index'),
    path("login1/", views.login1),
    path('student/', include('student.urls')),
    path('teacher/', include('teacher.urls')),
]

这是CRM.urls的代码

from django.http import HttpResponse
from django.shortcuts import redirect


def index(request):
    return HttpResponse("这是我的第一个项目")


def login1(request):
    return redirect('index')

这是CRM.views代码

"""CRM URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from . import views

app_name = "student"

urlpatterns = [
    path('admin/', admin.site.urls),
    path('index', views.index, name='index'),
    path('login/', views.login, name='login'),
]

这是app我命名为student的app的urls的代码

from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import redirect
# Create your views here.


def login(request):
    return redirect('student:index')

def index(request):
    return HttpResponse("这是我的student项目")

这是app的views的代码。
在这里插入图片描述
效果就是想打开哪个就打开哪个,不会冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值