• Django-视图&网址


    前言

    Django第一篇简单的介绍了环境搭建与创建Django项目的两种方式,以及如何启动服务,在前端访问HelloWorld地址,这篇内容首先学习一下Django项目中的各个模块的用途及Django视图和网址的关系,最后我们再简单的开发一个网页

    模块详解

    我们仍然使用上一篇文章中创建的项目,目录结构如下

    django_first:这个目录最上层位项目根目录,同名的二级目录是创建项目时自动生成的(django-admin.exe startproject django_first)

    app_first:创建app时自动生成的目录(python manage.py satrtapp app_first),一个django项目可以包含多个app

    migrations:这个目录同样是在创建app时自动生成的,以后存放和数据库相关的文件

    setting.py:整个项目的配置文件,包含了app的配置,模板的配置,数据库的配置等等全部在这个文件中

    urls.py:URL配置表文件,主要是将URL映射到应用程序上。当用户请求某个URL时,django会根据这个文件夹中的映射关系指向某个目标对象(简单的说就像当你调用某一个函数时,它可以根据你的参数去找这个函数,他关联了views中的某一个函数)该对象可以是某个应用中的urls.py文件,也可以是某个具体的视图函数。在django中,这个文件也被称为URLconf,这是django非常强大的一个特性。

    wsgi.py:这个文件据说是项目上线时使用的,目前用不到(资料:WSGI是 Web Server Gateway Interface缩写,它是python所选择的服务器和应用标准,django也会使用。wsgi.py定义了我们所创建的项目都是WSGI应用)

    admin.py:项目的后台,只需要简单的添加一些代码即可拥有一个管理后台

    apps.py:存储对应app的配置信息

    models.py:与数据库操作相关,存入或读取数据时时用到这个,当然用不到数据库的时候你可以不使用

    tests.py:测试项目的文件

    views.py:处理用户发送的请求,从urls.py中对应过来,通过渲染templetes中的网页可以将内容显示

    以上就是所有模块的主要功能,要想深入理解我觉得还要经过长时间的实践,很多理论的东西真的不 是一天两天就能理解的,所以我们目前只需要大概都是用来做什么即可

    视图

    故名思意,我觉得这里的视图就是访问url时,展示的内容或者一个url的功能,views.py就是存储了一些功能函数,如果你接触过QT,那么就很类似信号与槽的机制。接下来我们再简单的写一个案例-实现一个简单的计算器

    views.py中写入如下代码

    from django.shortcuts import render, HttpResponse
    
    # Create your views here.
    def hello_world(request):
        return HttpResponse("hello world")
    
    def add(request):
        a = request.GET["a"]
        b = request.GET["b"]
        result = int(a) + int(b)
        return HttpResponse("{} + {} = {}".format(str(a), str(b), str(result)))
    
    def sub(request):
        a = request.GET["a"]
        b = request.GET["b"]
        result = int(a) - int(b)
        return HttpResponse("{} - {} = {}".format(str(a), str(b), str(result)))
    
    def mult(request):
        a = request.GET["a"]
        b = request.GET["b"]
        result = int(a) * int(b)
        return HttpResponse("{} * {} = {}".format(str(a), str(b), str(result)))
    
    def divi(request):
        a = request.GET["a"]
        b = request.GET["b"]
        result = int(a) / int(b)
        return HttpResponse("{} / {} = {}".format(str(a), str(b), str(result)))

    网址

    网址就是我们浏览器中输入的一串字符串,当访问某一个字符串时,浏览器会显示相应的内容,我们再urls.py中加入如下代码,使其与视图关联起来

    """django_first URL Configuration
    
    The `urlpatterns` list routes URLs to views. For more information please see:
        https://docs.djangoproject.com/en/2.2/topics/http/urls/
    Examples:
    Function views
        1. Add an import:  from my_app import views
        2. Add a URL to urlpatterns:  path('', views.home, name='home')
    Class-based views
        1. Add an import:  from other_app.views import Home
        2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
    Including another URLconf
        1. Import the include() function: from django.urls import include, path
        2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
    """
    from django.contrib import admin
    from django.urls import path
    
    from app_first import views
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path("helloworld/", views.hello_world, name="hw"),
    
        path("add/", views.add, name="add"),
        path("sub/", views.sub, name="sub"),
        path("mult/", views.mult, name="mult"),
        path("divi/", views.divi, name="divi")
    ]

    接下来我们启动服务,然后浏览器中输入地址 127.0.0.1:8000/计算方法名称name/?数字1&数字2, 如:http://127.0.0.1:8000/add/?a=1&b=2, 你会看到浏览器返回的数据

    总结

    1. 先简单了解Django项目中每一个模块的用途即可

    2. views与urls的关系,能够把这两个文件中的函数与地址关联起来

    3. 启动服务的命令及地址访问的方式,如果你对这个地址有疑问,可以再了解一下get请求和post请求,为后面内容打一下基础

  • 相关阅读:
    用python实现average()函数,使得当可变参数长度为0的时候,也能正确返回结果。
    请用python实现函数func,当参数类型为list时,返回list中所有数字类型元素的和,当参数类型为tuple时,返回tuple中所有数字类型元素的乘积。
    用python实现循环和递归的形式定义函数,求出1~100的和。
    python实现0~100的平方和,用sum()函数接收一个list作为参数,并返回list所有元素之和。请计算 1*1 + 2*2 + 3*3 + ... + 100*100。
    用python实现线性回归
    IE11用JS检测判断
    Google Chrome的CSS hack写法
    javascript间窗口互相通信,window.open新建窗口保存父窗口对象
    解决IE6不支持css min-width与min-height
    CSS实现兼容性的渐变背景(gradient)效果(转)
  • 原文地址:https://www.cnblogs.com/linuxchao/p/linuxchao-view_url.html
Copyright © 2020-2023  润新知