前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白学Django第五天| 视图View的初步使用

小白学Django第五天| 视图View的初步使用

作者头像
Python进击者
发布2020-02-24 12:40:00
5890
发布2020-02-24 12:40:00
举报
文章被收录于专栏:JAVAandPython君

小白学Django系列:

用最短的时间学最多的知识,本文大约花费6分钟

主要内容:

1. 视图函数的初步使用

2. MySQL配置的一些报错问题

视图函数的初步使用

可能刚接触Django框架的朋友不理解视图函数是啥,其实在之前的Flask框架中也是有这一概念的。

在Django中,通过浏览器去请求一个页面时,此时使用视图函数来处理这个请求,视图函数处理完成之后,就要浏览器返回页面内容。

1. 定义视图函数

如何来定义一个视图函数呢?

视图函数定义在view.py文件中:

视图函数必须带一个参数request,进行处理之后,需要返回一个HttpResponse的类对象,里面包含的参数就是返回给浏览器显示的内容。

2.URL配置

在django2.0 以上的版本中,默认使用的是path转换器,我们来通过一个小例子来看看Django的Url配置。

下面是我们的视图函数:

接着我们去urls.py文件:

我们配置完成之后可以通过

代码语言:javascript
复制
python manage.py runserver

来启动服务器,查看相应路径 http://127.0.0.1:8000/index/

发现正是我们在视图函数中所输出的数据。

当然,有关URL的配置还涉及到了转换器,转换器是什么呢?简单来说就是能够路由提取的参数 。在后面这篇Flask系列的文章中我也讲到过转换器是啥,小白学Flask第三天| 今天把视图函数的路由给讲清楚!

我这里给出官方的例子:

代码语言:javascript
复制
from django.urls import path
from . import views
urlpatterns = [    
     path('articles/2003/', views.special_case_2003),    
     path('articles/<int:year>/', views.year_archive),    
     path('articles/<int:year>/<int:month>/', views.month_archive),    
     path('articles/<int:year>/<int:month>/<slug:slug>/', views.article_detail),
     ]

注意:

  • 要从 URL 中取值,使用尖括号。
  • 捕获的值可以选择性地包含转换器类型。比如,使用 <int:name> 来捕获整型参数。如果不包含转换器,则会匹配除了 / 外的任何字符。
  • 这里不需要添加反斜杠,因为每个 URL 都有。比如,应该是 articles 而不是 /articles 。

一些请求的例子:

  • /articles/2005/03/ 会匹配 URL 列表中的第三项。Django 会调用函数 views.month_archive(request, year=2005, month=3) 。
  • /articles/2003/ 会匹配列表中的第一项,而不是第二项,因为这些模式是按顺序测试的,而第一项是第一个通过的测试。随意利用命令来插入类似这样的特殊情况。在这里,Django将调用 views.special_case_2003(request)
  • /articles/2003 不会匹配任何项,因为每一个匹配需要在最后加一个斜杠。
  • /articles/2003/03/building-a-django-site/ 会匹配 URL 列表中的最后一项。Django 会调用函数 views.article_detail(request, year=2003, month=3, slug="building-a-django-site") 。

转换器这里不过多的解释,需要大家牢牢记住,这里提供给大家官方的案例:

https://docs.djangoproject.com/zh-hans/3.0/topics/http/urls/

以及我在Flask系列中解释过的转换器,整体的思路是一样的。

小白学Flask第四天| 把路由转换器玩的更牛逼

小白学Flask第三天| 今天把视图函数的路由给讲清楚!

补充知识点

在前一篇文章中 小白学Django第四天| Django后台管理及配置MySQL数据库 我们补充了Mysql数据库的配置,但是在实际的配置中,我们会遇到一些报错,例如:

代码语言:javascript
复制
django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11

这是由于python版本的原因,这里我给大家解决方案:

https://blog.csdn.net/qq_35304570/article/details/79674449

如果还有什么问题可以私聊我!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档