• Django 基础二(View和urls)


    上一篇博文已经成功安装了python环境和Django,并且新建了一个空的项目.接下来就可以正式开始进行Django下 的Web开发了.首先进入项目的主目录: `cd ./DjangoLearn/hollow_world` 新建一个app名字为'myBlog': `python manage.py startapp myBlog` 新建完成之后,可以看到当前目录多了一个叫myBlog的文件目录.

    .

    1 注册app

    接下来我们编辑'hollow_world'目录下的setting.py文件.找到'INSTALLED_APPS'的这个list.在最后添加一行,注册我们新建的app:

    
        'django.contrib.auth',
    
        'django.contrib.contenttypes',
    
        'django.contrib.sessions',
    
        'django.contrib.messages',
    
        'django.contrib.staticfiles',
    
        'myBlog',#在项目中注册myBlog这个app
    

    进入myBlog目录会发现里面有两个文件目录和一些'.py'结尾的python文件.

    2 function view

    我们首先编辑一下'views.py'写一个方法,来实现让浏览器输出'Hollow world!':

    from django.shortcuts import render
    from django.http import  HttpResponse#导入HttpResponse对象
    
    # Create your views here.
    def hollow_world(request):
        if request.method=='GET':
            return HttpResponse('Hollow world!')
        else:
            return HttpResponse('Hollow world fiale')
    

    上面的代码实际上是定义了一个方法(function),功能是:当接收到一个HTTP请求时,先判断一下请求的方式是不是'GET',如果是,就返回一个用'Hollow world!'这个字符进行初始化的HttpResponse对象(在这里Hollow world会在浏览器访问时显示在页面上).Django官方把这种直接用def关键字定义方法来处理http请求的方式称为function view。

    前面注册了app,也定义完了function是不是就可以了启动服务访问呢?并不是,我们还需要进行路由的映射才行.

    3 urls.py

    编辑'hollow_world'文件目录下的urls.py 文件:

    from django.contrib import admin
    from django.urls import path
    from myBlog.views import hollow_world#引入上面编写的hollow_world()方法
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',hollow_world),#将路由映射到hollow_world()这个function上
    ]
    

    到这里可以说是万事具备,只欠东风了.在我们的项目文件目录下启动服务:
    python manage.py runserver 8080
    服务正常启动如下图:
    .

    在浏览器中输入:127.0.0.1:8080进行访问,就能看到'Hollow world! '了!
    到这里可以算是完成了一次:
    用户访问浏览器-->浏览器收到用户请求并且响应-->浏览器渲染服务器的响应
    的一个完整过程.


    现在概括一下django web的 一般步骤:

    第一步:用`django-admin startproject`命令创建项目。 第二步: 用`python manager.py startapp`创建app。 第三步: 在项目的`setting.py` 文件里注册app 第四步: 在app文件目录下的`view.py`里编写视图函数. 第五步:修改项目文件的`urls.py`文件,进行路由映射,然后就可以启动服务访问了!

    4 class-based view

    上文中编写views.py里的视图函数用的是function view的方式先判断http请求的方式然后再做对应的处理,在业务逻辑较复杂时代码可读性不是很好。在实际开发中,为了避免频繁的判断http请求方式,和提高代码的可读性,一般采用class-based view 的方式来处理http请求。关于class-based view的介绍请看Django官方文档.
    用class-based view 的方式来实现让浏览器输出'Hollow world!',views.py的代码如下:

    from django.shortcuts import render
    from django.views import View #导入View这个基础类
    from django.http import HttpResponse
    # Create your views here.
    
    
    class HollowView(View):
        """docstring for HollowView."""
        def get(self,request):
            return HttpResponse('Hollow world!')
    
    
    

    要使用class-based view 必须要:

     from django.views import View #导入View这个基础类
    

    所有自定义的视图类(在这个例子中是HollowView)必须是View的子类。也就是说,我们在定义自己的视图类的时候,必须继承View这个类。

    上面我们修改了views.py,接下来是修改项目文件目录下的urls.py:

    from django.contrib import admin
    from django.urls import path
    
    from myBlog.views import HollowView#导入HollowView
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',HollowView.as_view()),
    ]
    

    在使用HollowView这个视图类之前必须先导入:

    from myBlog.views import HollowView#导入HollowView
    

    这里的HollowView.as_view()调用了HollowView的as_view()方法是因为Django的路由是把http请求映射到一个可调用的方法上,而HollowView是一个视图类,不是可调用的方法。as_view()是视图类的一个class function,作用是创建一个视图类的实例,并且调用该实例的dispatch()方法,dispatch()方法会根据传入的http的请求方式去匹配对应的方法进行请求的处理(在HollowView中我们只定义了用于处理http请求方式为GET的处理方法)。

    5 urls.py 使用include()

    在开发中,一个Django项目下可能不止一个app,如果每定义一个视图类就都要修改项目文件的urls.py难免会出错。实际上我们可以在每个app文件目录下新建一个urls.py文件。django为我们提供了一个include()方法,利用include()方法,可以让项目文件目录的urls.py包含app文件目录下的urls.py,阅读项目文件的urls.py的注释部分,你会发现官方也提倡我们这么做。就以当前项目作为例子,项目文件目录的urls.py内容为:

    from django.contrib import admin
    from django.urls import path,include
    # from myBlog.views import HollowView
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/',include('myBlog.urls')),#当请求的url是以‘blog/’开头时,则去Blog这个app下的`urls.py`进行匹配。
    ]
    

    myBlog 文件目录下的的urls.py内容为:

    from django.contrib import admin
    from django.urls import path
    
    from myBlog.views import HollowView
    
    urlpatterns=[
    path('',HollowView.as_view()),
    ]
    
    

    执行python manage.py runserver服务启动后,我们访问127.0.0.1:8000/blog就可以看到页面上输出了‘Hollow world!’

    最后我们来概括一下Django 的Web开发的一般步骤:

    第一步:用`django-admin startproject`命令创建项目。 第二步: 用`python manager.py startapp`创建app。 第三步: 在项目的`setting.py` 文件里注册app 第四步: 在app文件目录下的`view.py`里编写视图函数(实际开发中尽量使用class-based view). 第五步:在app文件目录下新建一个`urls.py`文件,并且修改项目文件的`urls.py`文件,进行路由映射(推荐使用项目目录`urls.py`中使用`include()`方法指向app中`urls.py`的方式) 下一篇文章内容是关于django form的构造,使用以及template的使用
  • 相关阅读:
    Discuz X3.2 分区 gid 完美伪静态方法 Apache/Nginx
    如何批量转换 WordPress 文章分类
    修改 WordPress 文件上传目录
    如何验证 jemalloc 优化 Nginx 是否生效
    .Net Core 1.1 + CentOs 7 环境配置
    DotNet Core中使用dapper
    爬虫 HttpHelper
    iTextSharp 不适用模板 代码拼接PDF
    .Net中的加密解密
    .Net Core使用 MiniProfiler 进行性能分析
  • 原文地址:https://www.cnblogs.com/hebilical/p/9073527.html
Copyright © 2020-2023  润新知