首页 > Web开发 > 详细

Django视图和URL配置

时间:2019-07-04 19:46:26      阅读:125      评论:0      收藏:0      [点我收藏+]

  使用Django,你会用不同的方法来说明这两件事 页面的内容是靠view function(视图函数) 来产生,URL定义在 URLconf 中。首先,我们先写一个Hello World视图函数。

  python3.6 + django 2.2.2

1. 第一份视图

创建views.py

技术分享图片
from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello World")
View Code

代码说明:

  • 首先,我们从 django.http 模块导入(import) HttpResponse 类。
  • 接下来,我们定义一个叫做hello 的视图函数。每个视图函数至少要有一个参数,通常被叫作request。 这是一个触发这个视图、包含当前Web请求信息的对象,是类django.http.HttpRequest的一个实例。在这个示例中,我们虽然不用request做任何事情,然而它仍必须是这个视图的第一个参数。

2. 第一个URLconf

   URLconf 就像是 Django 所支撑网站的目录。 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。 例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中。

技术分享图片
from django.conf.urls.defaults import *
from spider.views import hello
urlpatterns = [
    path(admin/, admin.site.urls),
    path(‘‘, views.hello),
    path(hello/, views.hello),
]
View Code

代码说明:

  • 首先,我们从模块 (在 Python 的 import 语法中, spider/views.py 转译为 spider.views ) 中引入了 hello视图。 (这假设spider/views.py在你的Python搜索路径上。关于搜索路径的解释,请参照下文。)

  • 接下来,我们为urlpatterns加上一行: path(‘hello/’, views.hello), 这行被称作URLpattern,它是一个Python的元组。元组中第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数。

3. 动态内容

  让Django视图显示当前日期和时间。

  spider/views.py的代码如下:

技术分享图片
def current_datetime(request):
    now = datetime.datetime.now()
    return render_to_response(current_datetime.html, {current_date: now})


def hours_ahead(request, offset):
    try:
        offset = int(offset)
    except ValueError:
        raise Http404()
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    return render_to_response(hours_ahead.html, {hour_offset: offset, next_time: dt})
View Code

  代码说明:current_datetime 视图函数显示当前时间。hours_ahead根据输入的值计算要显示的时间,这里做了容错处理,如果输入的非整型则返回一个404给用户。

  templates/current_datetime.html 的代码如下:

技术分享图片
# base.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <h1>My helpful timestamp site</h1>
    {% block content %}{% endblock %}
    {% block footer %}
    <hr>
    <p>Thanks for visiting my site.</p>
    {% endblock %}
</body>
</html>

# current_datetime.html
{% extends "base.html" %}

{% block title %}The current time{% endblock %}

{% block content %}
<p>It is now {{ current_date }}.</p>
{% endblock %}
View Code

  templates/hours_head.html 的代码如下:

技术分享图片
{% extends "base.html" %}

{% block title %}Future time{% endblock %}

{% block content %}
<p>In {{ hour_offset }} hour(s), it will be {{ next_time }}.</p>
{% endblock %}
View Code

   urls.py函数代码如下:

技术分享图片
from django.contrib import admin
from django.urls import path
from spider import views
from books import views as bk
from contact import views as ct

urlpatterns = [
    path(admin/, admin.site.urls),
    path(‘‘, views.hello),
    path(hello/, views.hello),
    path(time/, views.current_datetime),
    path(time/plus/<offset>/, views.hours_ahead),
]
View Code

  代码说明: 导入视图views.py对应的视图函数,定义了两个url显示时间和日期并对应匹配到各个视图函数。

Django视图和URL配置

原文:https://www.cnblogs.com/blackysy/p/11133970.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!