#yyds干货盘点#django学习之视图

网友投稿 321 2022-08-23


#yyds干货盘点#django学习之视图

django编写视图

创建一个 polls 目录,它的目录结构大致如下:

polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py

目录结构包括了投票应用的全部内容

打开 ​​polls/views.py​​输入python代码:

#polls/views.pyfrom django.import HttpResponsedef index(request): return HttpResponse("Hello, world. You're at the polls index.")

这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。

为了创建 URLconf,请在 polls 目录里新建一个 ​​urls.py​​ 文件。你的应用目录现在看起来应该是这样:

polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py

在 ​​polls/urls.py​​ 中,输入如下代码:

from django.urls import pathfrom . import viewsurlpatterns = [ path('', views.index, name='index'),]

URLconfs 中使用的 django.urls 函数

path()

path(route, view, kwargs=None, name=None)

返回一个元素,以便包含在 urlpatterns 中。例如:

from django.urls import include, pathurlpatterns = [ path('index/', views.index, name='main-view'), path('bio//', views.bio, name='bio'), path('articles//', views.article, name='article-detail'), path('articles///', views.section, name='article-section'), path('blog/', include('blog.urls')), ...]

​​route​​​ 参数应该是一个字符串或 ​​gettext_lazy()​​​ ,它包含一个 URL 模式。这个字符串可以包含角括号(就像上面的 ​​​​​)来捕获 URL 的一部分,并将其作为关键字参数发送给视图。角括号可以包含一个转换器规格(像​​ ​​​ 的 int 部分),它限制了匹配的字符,也可以改变传递给视图的变量的类型。例如,​​​​ 匹配一串十进制数字,并将值转换为 int。

​​view​​​ 参数是一个视图函数或 ​​as_view() ​​​的结果,用于基于类的视图。它也可以是一个 ​​django.urls.include()​​。

​​kwargs​​ 参数允许你向视图函数或方法传递附加参数。

re_path()

re_path(route, view, kwargs=None, name=None)

返回一个元素,以便包含在 urlpatterns 中。例如:

from django.urls import include, re_pathurlpatterns = [ re_path(r'^index/$', views.index, name='index'), re_path(r'^bio/(?P\w+)/$', views.bio, name='bio'), re_path(r'^blog/', include('blog.urls')), ...]

​​route​​​ 参数应该是一个字符串或 ​​gettext_lazy() ​​​,它包含一个与​​ Python ​​​的 ​​re​​​ 模块兼容的正则表达式。字符串通常使用原始字符串语法​​(r'')​​​,因此它们可以包含像 ​​/d​​ 这样的序列,而不需要用另一个反斜杠来转义。当进行匹配时,从正则表达式中捕获的组会被传递到视图中 —— 如果组是命名的,则作为命名的参数,否则作为位置参数。值以字符串的形式传递,不进行任何类型转换。

view、kwargs 和 name 参数与 path() 相同。

include()

include(module, namespace=None)

include(pattern_list)

include((pattern_list, app_namespace), namespace=None)

一个函数,它接收一个完整的 Python 导入路径到另一个应该被 “包含” 在这里的 URLconf 模块。可以选择指定 application namespace 和 instance namespace,在这两个空间中,条目将被包含进去。

通常,应用程序的命名空间应该由包含的模块指定。如果设置了应用程序命名空间,​​namespace​​ 参数可以用来设置不同的实例命名空间。

​​include()​​ 也接受一个返回 URL 模式的迭代函数或一个包含这种迭代函数加上应用程序名称空间的二元元组作为参数。

参数:

​​module​​ -- URLconf 模块(或模块名称)

​​namespace (str) ​​-- 包含的 URL 条目的实例命名空间。

​​pattern_list​​​ -- 可迭代的 ​​path()​​​ 和/或​​ re_path()​​ 实例。

​​app_namespace (str) ​​-- 被包含的 URL 条目的应用命名空间


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:#yyds干货盘点#python类的作用域
下一篇:springcloud 如何解决微服务之间token传递问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~