天天看点

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

新建app

在项目的根目录执行python manage.py startapp app名字

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

没有tests.py

# URL概念:

URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

urls.py的作用:

http://127.0.0.1:8000/hello/

URL解释:

schema://host[:port#]/path/.../[?query-string][#anchor] schema:指定使用的协议(例如:http, https, ftp) host:Http服务器的IP地址或者域名 port:端口号,http默认是80端口 path:访问资源的路径 query-string:发送给http服务器的数据 anchor:锚点

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

原理

当一个请求来到的时候

  1. 首先到项目目录下的urls.py (根URLconf模块)中,查找路由规则
  2. 根URLconf模块,里面定义了 urlpatterns 变量
  3. urlpatterns 是一个(django.urls.path,django.urls.re_path 对象)列表
  4. 按顺序运行每个url模式,在第一个匹配的模式停止
  5. 一旦匹配,django导入并调用给定的视图
  6. 如果中间出错,或者没有匹配到,返回404

path的参数

path(route, view, kwargs=None, name=None) route 是一个字符串的url规则 view 是个视图 kwargs 额外参数,传递给view,必须是一个字典 name url的命名

转换器的使用:

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

re_path正则匹配

re_path('^hello/$',views.test5),re_path('^hello/(?P[0-9]+)/',views.test6),           
def test5(request):    return HttpResponse('这是用的re_path设置的')def test6(request,yy):    print(yy,type(yy))    return HttpResponse('hello %s'%yy)           

代码 演练:

在student的app下的urls.py

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

student.view.py

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

ip+端口+app+url匹配模式

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

一个url对应一个视图函数,但我们的视图越来越多时,url也就越来越多

一个project有一个总的urls.py 各个app也可以自己建立自己的urls.py 用include()函数在project的urls.py文件进行注册

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

url命名

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

name参数可以给这个url取一个合适的名字。通过给url取名字,以后在view或者模板中使用这个URL,就只需要通过这个名字就可以了。这样做的原因是防止url的规则更改,会导致其他地方用了这个url的地方都需要更改,但是如果取名字了,就不要做任何改动了。

模板系统

模板放在哪???

在主目录下创建一个templates目录用来存放所有的html的模板文件.templates目录里面在新建各个以app名字命名的目录来存放各个app中模板文件.

django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结
django redirect传递参数_Django的APP,视图,url和模板# URL概念:url命名模板系统总结

render方法是django封装好用来渲染模板的方法 很方便,很好用!!!

总结

在url中捕获参数

在url规则中使用可以捕获url中的值 传递给视图捕获的值是 字符串

路径转换器,上面案例:int:pk

常用的转换器:

str 匹配除了‘/'路径分隔符之外的所有字符串

int 匹配任意整数

slug 匹配任意ascii字符 加上连字符和下划线

uuid 格式化id

path 匹配任意非空字符

使用正则表达式 re_path(route, view, kwargs=None, name=None)

django 搜索 url 搜索的是什么?

只搜索路径部分,跟参数,以及请求方法(get,post)无关

同一个url 可以匹配 get, post

包含其他URLconfs,include

传递额外参数,path,re_path 方法中,传递一个kwargs 的字典参数

当kwargs 中的key 与 url捕获中的key 一致的时候,以kwargs为准

url 命名,页面重定向 ,跳转页面 登录之后, 某个操作之后

app_name:定义在 app文件夹下的urlconf模块中app_name = app名称

模板系统

html 源码写到模板文件中

return render(request, 'teacher/index.html')           

继续阅读