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日
    浏览(13)
  • Django连接多个数据库

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

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

    Django基本数据库操作

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

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

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

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

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

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

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

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

    django添加数据库字段进行数据迁移

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

    2024年02月09日
    浏览(18)
  • 7. Django 模型与数据库

    7. Django 模型与数据库

    7.1.1 定义模型 7.1.2 开发个人的ORM框架 7.1.3 数据迁移 7.1.4 数据导入与导出 7.2.1 一对一表关系 学生id(主键) 姓名 班级 教室 1001 张三 三年级一班 301 1002 李四 三年级二班 302 1003 王五 三年级三班 303 学生信息id(主键) 年龄 联系电话 外键 1001 301 0000-120 1001 1002 302 0000-121 1002 1003 303

    2024年04月23日
    浏览(34)
  • django 记录日志到数据库

    1、导入相应插件 from django.utils.deprecation import MiddlewareMixin from middlewares.models import OpLogs, AccessTimeOutLogs 2、创建middlewares的app,并创建OpLogs, AccessTimeOutLogs数据模型 class OpLog(MiddlewareMixin): __exclude_urls = [‘index/’] # 定义不需要记录日志的url名单 3、在setting中引用 middlewares INSTALLED_

    2024年02月02日
    浏览(14)
  • 【Django】如何优化数据库访问

    原文作者 :我辈李想 版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。 Django是一个高级的Web框架,它自带的ORM(对象关系映射)可以让你轻松地进行数据库操作。但是,随着数据量的增长,数据库查询的性能问题也会变得越来越重要。因此,下面我

    2024年02月15日
    浏览(11)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包