Django视图

这篇具有很好参考价值的文章主要介绍了Django视图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、url路由

自上而下的,如果匹配的路由中是包含int转换器,则不能匹配其他的不是int的相关字符,譬如文字等;
自定义路由转换器:
1、创建一个converter.py的文件;
2、再写一个类:
class FourDigitYearConverter:
regex = ‘[0-9]{4}’ # 类属性,一个字符串形式的正则表达式属性
def to_python(self, value): # 一个用来将字符串转换成你想要的那个数据类型,并传给视图;如果转换失败,它必须弹出ValueError异常。
return int(value)
def to_url(self, value): # 将Python数据类型转换成一段url的方法,与上面方法相反;如果转换失败,它也必须弹出ValueError异常。
return ‘%04d’ % value
3、在该APP的url中注册它:
register_converter(converters.FourDigitYearConverter, ‘yyyy’)
使用样式:path(‘articles/yyyy:year/’, views.year_archive)

在路由中使用正则表达式:语法是 (?Ppattern) ,其中 name 是组名,pattern 是要匹配的模式。
例如:re_path(r’^articles/(?P[0-9]{4})/(?P[0-9]{2})/(?P[\w-]+)/$', views.article_detail)

二、路由转发

路由中的命名最好不要和路径的url一样,不然有可能导致错误。
可以在include后面加上一个字典参数,但是该参数必须是各个子路由都会使用的,不然可能会出错。

三、反向解析和命名空间

1、反向解析url
def redirect_to_year(request):
# …
year = 2020
# …
return HttpResponseRedirect(reverse(‘news-year-archive’, args=(year,)))
2、命名空间app_name和namespace:
在模板中使用的时候,用冒号隔开;
namespace定义在include中;整个项目的所有app中的所有namespace不能重名,也就是全局唯一;使用namespace功能的前提是设置app_name,如果不设置,会弹出异常;要在视图中获取namespace属性值,通过request.resolver_match.namespace。

四、函数视图及快捷方式

1、返回错误HttpResponseNotFound( );
Http404异常,返回Http404异常的时候需要用raise不能用return;
自定义各种错误页面:
#在子路由增加的条目
handler400 = views.bad_request
handler403 = views.permission_denied
handler404 = views.page_not_found
handler500 = views.error
然后在views中增加:
@requires_csrf_token
def bad_request(request, exception):
return render(request, ‘400.html’)
2、内置的快捷方法
render(request,template_name,, context=None, content_type=None, status=None, using=None)
必需参数:
● request:视图函数处理的当前请求,封装了请求头的所有数据,其实就是视图参数request。
● template_name:要使用的模板的完整名称或者模板名称的列表。如果是一个列表,将使用其中能够查找到的第一个模板。
可选参数:
● context:添加到模板上下文的一个数据字典。默认是一个空字典。可以将认可需要提供给模板的数据以字典的格式添加进去。这里有个小技巧,使用Python内置的locals()方法,可以方便地将函数作用域内的所有变量一次性添加进去。
● content_type:用于生成的文档的MIME类型。 默认为DEFAULT_CONTENT_TYPE设置的值,也就是’text/html’。
● status:响应的状态代码。 默认为200。
● using:用于加载模板使用的模板引擎的NAME。
def my_view(request):
# View code here…
return render(request, ‘myapp/index.html’, { ‘foo’: ‘bar’, }, content_type=‘application/xhtml+xml’)
等同于:
def my_view(request):
# View code here…
t = loader.get_template(‘myapp/index.html’)
c = {‘foo’: ‘bar’}
return HttpResponse(t.render(c, request), content_type=‘application/xhtml+xml’)
重定向——redirect()
redirect(to, args, permanent=False, *kwargs)
根据传递进来的url参数,返回HttpResponseRedirect。
参数to可以是:
● 一个模型实例:将调用模型的get_absolute_url()函数,反向解析出目的url;
● URL的name名称:可能带有参数:reverse()将用于反向解析url;
● 一个绝对的或相对的URL:将原封不动的作为重定向的目标位置。
默认情况下是临时重定向,如果设置permanent=True将永久重定向。文章来源地址https://www.toymoban.com/news/detail-755463.html

到了这里,关于Django视图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [django] django好玩的地方在于,可以批量操作数据库了

    django好玩的地方在于,可以批量操作数据库了。 和数据库快速交互,真的是好厉害。 这种情况怎么过滤 objects.filter project = models.ForeignKey(to=“Project”, verbose_name=‘项目’, on_delete=models.CASCADE, max_length=50, null=False, help_text=‘项目’) mysql json类型的字段 models.JSONField 在django中是什

    2024年02月22日
    浏览(41)
  • Django连接多个数据库

    为了让不同业务的数据分离,落到不同的库,使用 django 连接多个数据库。 Django 使用 default 数据库,如果没有其他选择 default 可以没有,但是必须设置一个空字典 设置多个数据库,需要同步多次。这里比较麻烦。 迁移将会把所有model的所有表镜像的迁移到两个库,自带的指

    2024年02月11日
    浏览(49)
  • Django基本数据库操作

    @ 目录 Django基本数据库操作 👨‍🏫内容一:基本数据库配置 👨‍🔬内容二:ORM基本操作 👉Django是一个流行的Python Web框架,它可以使用不同的数据库引擎来存储和管理数据。Django默认使用sqlite数据库,但是你也可以配置它使用mysql数据库。这里我将配置的是本地的Mysql数据

    2024年02月16日
    浏览(43)
  • Django迁移数据到指定数据库

    在Django中,你可以配置多个数据库,并且可以为不同的操作指定使用不同的数据库。这意味着你确实可以同时将数据保存到SQLite和MySQL数据库中,但这需要你在代码中明确指定每次数据库操作应使用哪个数据库。 首先,你需要在Django设置文件 settings.py 中定义两个数据库连接,

    2024年02月01日
    浏览(43)
  • Django dumpdata 迁移数据库数据

    本文介绍两种常用的 Django 服务迁移数据方法。 这两种方法都需要在新的服务器部署好数据库,创建好相应的数据库表和用户以后再进行。 针对数据量不是很大的项目,可以使用此方法,操作起来比较简单。 通过连接旧的数据库运行dumpdata导出命令导出数据。 连接上新的数

    2024年02月17日
    浏览(49)
  • Django中级指南:理解并实现Django的模型和数据库迁移

    Django 是一个极其强大的 Python Web 框架,它提供了许多工具和特性,能够帮助我们更快速、更便捷地构建 Web 应用。在本文中,我们将会关注 Django 中的模型(Models)和数据库迁移(Database Migrations)这两个核心概念。 在 Django 中,模型是一种特殊的对象,它对应数据库中的一张

    2024年02月13日
    浏览(42)
  • django添加数据库字段进行数据迁移

    1.修改view.py里面的变量 2.在model.py新增字段 3.打开terminal并将环境切到项目所在环境,切换方式为 4.执行命令

    2024年02月09日
    浏览(61)
  • 【Django入门系列】数据库操作

    在本章中,我们将学习在Django中进行数据库操作的基础知识。我们将探讨Django中的数据库支持、定义和迁移数据库模型、使用Django的ORM进行数据库查询以及数据库关系和查询优化。 Django提供了对多种关系型数据库的支持,包括常见的MySQL、PostgreSQL和SQLite等。你可以在项目的配

    2024年02月12日
    浏览(57)
  • Django、数据库----------ORM框架

    目录 1.安装第三方模块 2.ORM 1.自己创建数据库 2.django连接数据库 3.django操作表 创建表:在models.py文件中 删除表以及修改表 在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据 Django开发操作数据库更简单,内部提供了ORM框架。   ORM可以

    2024年02月09日
    浏览(55)
  • Django 数据库迁移反复出错

    Django 的数据库迁移有非常多问题,尤其是我们引入了一个维护了非常多年的大插件,比方说 wagtail。 这里总结一些常见问题和解决思路,我自己使用的是 MySQL(MariaDB) 首先说明一下 Django 数据迁移的机制 问题 : 1071, \\\'Specified key was too long; max key length is 767 bytes\\\' 解决 :最常见

    2023年04月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包