app用来实现一个独立的功能,视图一般都写在app的view.py中,并且视图的第一个参数永远是request,视图的返回值必须是HttpResponseBase对象或子类的对象。

创建一个app:first_project

进入项目所在文件夹,python manage.py startapp appname

views.py视图函数如下

from django.http import HttpResponse
# Create your views here.
def book(request):
return HttpResponse('Home page of book')
def book_detail(request,book_catagory,book_id): #这两个参数的名字要与url.py中的参数名称一致
text='The book is in %s catagory,and it's id is %s'%(book_catagory,book_id)
return HttpResponse(text)
def book_author(request):
author_name=request.GET.get('name')#通过request.GET.get获取输入的参数
text = 'The author of the book is %s'%author_name
return HttpResponse(text)

对应项目的url.py如下

from django.http import HttpResponse
from book import views #需要引入book项目的视图 def index(request):
return HttpResponse('首页') urlpatterns = [
path('', index), #定义输入参数为空的返回情况
path('admin/', admin.site.urls),
path('book/',views.book),
path('book_detail/<book_catagory>/<book_id>',views.book_detail),#尖括号表示可以在浏览器中传入的参数,注意此处的参数名称要与视图函数定义的参数名称一致
path('book_author/',views.book_author)
]

以上,如果调用book_detail,可在浏览器中输入http://127.0.0.1:8000/book_detail/health/3

以上,如果调用author,可以再浏览器中输入http://127.0.0.1:8000/book_author?name=libai

创建多个app:url_name_demo

先创建一个项目:django-admin startproject url_name_demo

再在这个项目下创建两个app:

cd url_name_Demo

python manage.py startapp front

python manage.py startapp cms

然后手动在front和cms的app里分别创建urls.py文件

front和cms的views.py文件分别如下

#front
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('Home page of front') def login(request):
return HttpResponse('Login of front') #cms
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse('Home page of cms') def login(request):
return HttpResponse('Login of cms')

front和cms的urls.py文件分别如下

#front
from django.urls import path
from . import views
urlpatterns=[
path('',views.index),
path('login/',views.login)
] #cms
from django.urls import path
from . import views
urlpatterns=[
path('',views.index),
path('login/',views.login)
]

整个项目的urls.py文件如下

from django.contrib import admin
from django.urls import path,include #还需导入include urlpatterns = [
path('admin/', admin.site.urls),
path('',include('front.urls')), #通过include将app的url与app的视图关联起来
path('cms',include('cms.urls'))
]

运行整个项目:

在浏览器输入http://127.0.0.1:8000/,显示Home page of front

在浏览器输入http://127.0.0.1:8000/login,显示Login of front

在浏览器输入http://127.0.0.1:8000/cms,显示Home page of cms

在浏览器输入http://127.0.0.1:8000/cms/login,显示Login of cms

网页跳转:

模块导入:from django.shortcuts import redirect

实现跳转:return redirect('/login') 参数为指定要跳转的功能网页,/login会重新从urls文件的路径中去进行匹配。

通过redirect('/login')实现网页跳转,通过render(request,'*.html')也可以实现同样效果,但是两者有实质性的区别。通过redict实现跳转,会根据redict指定的路径重新去urls文件进行路径匹配并执行相应的函数再返回网页,在浏览器中看到的也是一个新的url地址,而直接通过render进行跳转,只是将指定网页渲染出来,浏览器看到的url地址并不会发生改变。

url取名:

上述例子中的所有url的名称一旦改变,其他所有需要跳转到该url的引用都需要修改,为避免出现这个问题,可以给url取一个名字,后续通过反转这个url这个名字去找到对应的url

from django.shortcuts import redirect,reverse

路径写法:path('login/',views.login,name='login')

实现跳转:return redirect(reverse('login'))

即后续login/的url不论如何改变,改变成logging/、signin或者其他,都可以通过reverse('login')找到对应的url

由于多个app可能存在相同的url,为了避免在反转时对url产生混淆,可以在每个app的urls.py文件中通过app_name指定应用命名空间即可,后续在反转时同时指定命名空间和url

例如front app的urls.py文件中指定app_name='front'

路径写法:path('login/',views.login,name='login')

实现跳转:return redirect(reverse(front:'login'))

django创建app、在视图函数及url中使用参数、url命名、通过redirect实现网页路径跳转的更多相关文章

  1. JDBC中的DriverManager.getConnection(url)中的参数url

    1.Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); ...

  2. js获取url中的参数,url中传递中文的时候通过js解码的方式

    如果传递的参数是: <a href="${pageContext.request.contextPath}/productdisplay/productDisplay_productD ...

  3. Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  4. Django 框架篇(四) : 视图(view)详解 以及 路由系统(url)

    |--Django的View(视图) |-- CBV和FBV: |-- 给视图增加装饰器: |-- request对象: |-- response对象: |-- Django的路由系统(url): | ...

  5. 03.Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  6. day 53-1 Django基础三之视图函数

    Django基础三之视图函数   本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...

  7. day 67 Django基础三之视图函数

    Django基础三之视图函数   本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...

  8. Django 的 一些基本操作:视图函数,路由配置

    当安装好Django 通过上篇的随笔创好项目我们就能来耍下了, 但你会在你的项目中发现有一个settings.py 的文件,对的你肯定想到了需要配置,好了话不多说 Settings.py 找到下面的位 ...

  9. URL中传递参数给视图函数

    1. 采用在url中使用变量的方式: 在path的第一个参数中,使用<参数名>的方式可以传递参数.然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找 ...

随机推荐

  1. java串口通讯环境配置

    用java实现串口通信(windows系统下),配置如下: 1.comm.jar放置到 JAVA_HOME/jre/lib/ext;2.win32com.dll放置到 JAVA_HOME/bin;3. ...

  2. 我的Chrome插件

    1.AdBlock 用来屏蔽广告,用过的人都说好. 2.Flash Block(Plus) 用来限制Flash的播放. 3.Flash Control 用来限制Flash的播放. 4.Full Pag ...

  3. Kibana5.x界面简要介绍(含x-pack插件)

    简介:Kibana是一个为 ElasticSearch 提供的数据分析的 Web 接口(5601).可使用它对日志进行高效的搜索.可视化.分析等各种操作.Kibana目前最新的版本5.3.X-Pack ...

  4. mac date

    格式化UTC为可读格式 mbp:~ gavin$ date -r 1546848158 2019年 1月 7日 星期一 16时02分38秒 CST 获取当前 UTC mbp:~ gavin$ date ...

  5. js获取微信code

    function callback(result) { alert('cucess'); alert(result); //输出openid } function getQueryString(nam ...

  6. 关于设置cookie同源,axios请求加上cookie

    一个有cookie  一个没有 这是为啥!! axios都设置了的为true允许携带cookie 大佬答疑解惑:==>cookie同源域名才有啊,在Application看看cookie的pat ...

  7. node.js初识04

    node的Get表单提交 form.html <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. 自学oracle数据库

    1.因为自己要自学oracle数据库,所以就上网查了一下资料,总结了一下. 在以下连接有自学oracle的一下资料 博文中不让加入一些有广告的网站,请谅解,如有需要评论我私发. 2.学习Oracle的 ...

  9. Nginx加载ngx_pagespeed模块,加快网站打开的速度

    [页面加速]配置Nginx加载ngx_pagespeed模块,加快网站打开的速度   ngx_pagespeed 是一个 Nginx 的扩展模块,可以加速你的网站,减少页面加载时间,它会自动将一些提升 ...

  10. EL语言表达式 (三)【EL中的算术运算以及判断EL对象是否为空】

    一.EL中的算术运算 EL和其他语言一样,同样也提供了基本的算术运算(加.减.乘.除和取余),如下图. 运算符 功能 示例 结果 + 加 ${19+1} 20 - 减 ${66-30} 36 * 乘 ...