美文网首页Django来敲门WEB前端程序开发
Django来敲门~第一部分【4. 创建第一个模块应用】

Django来敲门~第一部分【4. 创建第一个模块应用】

作者: 大牧莫邪 | 来源:发表于2017-06-08 09:50 被阅读206次

    **大成若缺,其用不弊。大盈若冲,其用不穷。大直若屈。大巧若拙。大辩若讷。静胜躁,寒胜热。清静为天下正 **
    ——老子《道德经》

    本章内容

    • 创建应用(app)
    • 开发第一个视图(View)
    • URL访问配置的嵌套(urls)

    1. 创建项目的子模块应用

    上一节内容中,我们创建了一个django项目mysite/,在项目的骨架的基础上,我们再创建基于项目的一个子模块投票模块,模块名称暂时定义为polls

    进入项目目录,执行如下命令,在mysite/项目基础上创建一个模块应用polls

    python3 manage.py startapp polls
    

    上述命令执行完成之后,会在我们的项目文件夹中,自动生成一个polls应用模块文件夹,包含模块需要的基本文件结构,如下:


    项目应用文件目录结构

    2. 创建模块应用中的第一个视图

    模块中的视图对应的是views.py文件,打开polls/views.py文件,创建如下的方法

    # 引入需要的模块
    from django.http import HttpResponse
    
    # 定义一个处理方法
    def index(request):
        return HttpResponse("Hello Django!")
    

    视图创建完成后,我们要将视图和对应的URL地址进行关联,项目中的url地址映射的主要配置文件是urls.py,在polls模块中创建urls.py配置文件,并修改polls/urls.py文件内容如下:

    # 引入需要的模块
    from django.conf.urls import url
    from . import views
    
    # 配置url地址和view视图的映射关系
    urlpatterns = [
        url(r"^$", views.index, name="index")
    ]
    

    配置好我们模块应用中的urls地址映射之后,需要将这个模块的映射关系包含到我们的根模块mysite的映射关系中才能生效,编辑mysite/urls.py修改如下:

    from django.conf.urls import include, url
    from django.contrib import admin
    
    urlpatterns = [
        url(r"^admin/", admin.site.urls),
        url(r"^polls/", include("polls.urls"))
    ]
    

    在上述配置中,我们通过urlpatterns来关联映射关系,整体关系如下图所示:

    请求流程图
    1.客户端发起请求:http://localhost:8000/polls

    2.项目接收到用户请求,url地址-> polls/

    3.进入项目的映射文件urls.py中进行正则匹配:url(r"^polls", include("polls/urls")),开始打开通过include包含的polls.urls子模块映射文件polls/urls.py

    4.进入项目子模块polls的映射文件中进行匹配,由于polls/路径已经匹配通过,开始匹配polls/后面的路径-> 路径为:"";
    进入polls/urls.py中查找对应的路径->url(r"^$", view.index, name="index")

    5.匹配到views.index,开始打开子模块的views.py视图文件,执行index视图方法

    6.views.py中的视图方法index()返回了一条字符串,打印到我们浏览器的页面上

    OK,经过上面的分析之后,我们启动项目python3 manage.py runserver,然后通过浏览器进行访问

    浏览器访问子模块应用

    附注:url(regex, view, kw, name)参数解析

    • 参数regex:这是一个正则表达式,用于匹配接收到的url路径,Django会按照顺序进行正则表达式的匹配,匹配成功就会调用指定的资源
    • 参数view:当第一个正则表达式的路径匹配成功时,Django就会开始调用view参数指向的视图函数,并且将django.http.HttpRequest内置对象作为函数的第一个参数传递给函数并且调用执行函数
    • 参数kw:任意关键字都可以作为参数传递给函数
    • 参数name:给当前的url命名,命名之后就可以在任意地方使用这个url

    Django来敲门

    相关文章

      网友评论

      • yfp_16:ALLOWED_HOSTS = ["10.1.20.61","127.0.0.1"], 用127.0.0.1::8000/polls 可以访问,但是用10.1.20.61就不行, 这是为什么呢?
        大牧莫邪:@yfp_16 在启动的时候绑定的地址
      • springye:不错,比小说精彩,越看越来劲
        大牧莫邪:@springye 谢谢~

      本文标题:Django来敲门~第一部分【4. 创建第一个模块应用】

      本文链接:https://www.haomeiwen.com/subject/vriofxtx.html