Django2.2丨视图和模板

概况

Django中的视图的概念是:一类具有相同功能和模板的网页的集合。

在Django中,网页和其他内容都是从视图派生而来。每一个视图表现为一个简单的Python函数(或是方法,如果是在基于类的视图里的话)。Django将会根据用户请求的URL来选择使用用哪个视图。

编写更多视图

在polls/views.py里添加更多视图。增加一些接受参数

# polls/views.py
def detail(request, question_id):
    return HttpResponse("You're looking at question %s." % question_id)

def results(request, question_id):
    response = "You're looking at the results of question %s."
    return HttpResponse(response % question_id)

def vote(request, question_id):
    return HttpResponse("You're voting on question %s." % question_id)

然后在polls.urls中添加url

# polls/urls.py
from django.urls import path

from . import views

urlpatterns = [
    # ex: /polls/
    path('', views.index, name='index'),
    # ex: /polls/5/
    path('<int:question_id>/', views.detail, name='detail'),
    # ex: /polls/5/results/
    path('<int:question_id>/results/', views.results, name='results'),
    # ex: /polls/5/vote/
    path('<int:question_id>/vote/', views.vote, name='vote'),
]

如果在浏览器中跳转到"/polls/34/",Django将会运行detail()方法并且展示在URL提供的问题ID。

当某人请求网站的某一页面时,例"polls/34/",Django将会载入mysite.urls模块,因为这个配置项ROOT_URLCONF中设置了。

然后Django寻找名为urlpatterns变量并且按序匹配正则表达式。找到匹配项"polls/",它切掉了匹配的文本(“polls/”),将剩余文本"34/",发送至"polls.urls",URLconf做进一步处理。

在剩余文本匹配了"int:question_id/",使得Django以如下形式调用detail()

detail(request=<HttpRequest object>, question_id=34)

question_id=34由int:question_id匹配生成。使用尖括号”捕获"这部分URL,且以关键字参数的形式发送给视图函数。

上述字符串的:question_id部分定义了将被用于区分匹配模式的变量名,而int:则是一个转换器决定了应该以什么变量类型匹配这部分的URL路径。

写一个有用的视图

每个视图必须要做的只有两件事

  • 返回一个包含请被请求页面内容的HttpResponse对象
  • 抛出一个异常,例Http404。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值