程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Django Web框架(二)创建一个网页

发布于2020-02-27 09:35     阅读(1326)     评论(0)     点赞(27)     收藏(5)


工具:Pycharm,python 3,Django 2,cmd命令行
步骤:
1.默认已经建好了一个Django最小框架myDjango。
2.在myDjango目录下,用命令行创建一个app,输入 python manage.py startapp firstApp。app和project的关系大概是:后者实现前者的一个子功能。
在这里插入图片描述
views.py中包含对某个HTTP请求(url)的响应,通俗的说就是请求一个url后,views.py决定返回的内容。至于负责哪个url,需要通过修改urls.py来确定,后面会提到。
3.对firstApp下的view.py文件进行修改,如让它返回一个网页(这个网页是复制了apache的一个子页面的源码),就需要在render函数中写明这个页面的路径。在这里我是在firstApp下新创建了一个myTemplate.html。

from django.shortcuts import render
from django.http import HttpResponse
def hello(request):    #输入的参数是一个url请求对象
    return render(request,"myTemplate.html")    #对于请求,返回一个由render函数返回的response对象
  • 1
  • 2
  • 3
  • 4

4.接下来需要配置路由,就是当浏览器发出一个url请求时,路由找到关于此url对应的response内容在这个project中的什么位置。首先配置app的本地路由,在firstApp下创建urls.py,输入如下代码。

from django.urls import path
from . import views     #导入同属于一个包中的views
urlpatterns = [
    path('',views.hello)    #将本地路由和views中要展示的内容连接
]
  • 1
  • 2
  • 3
  • 4
  • 5

接着配置全局路由,在myDjango下的urls.py增加一个path。
这使得当浏览器请求index/目录时,Django的全局路由会找到firstApp.urls(即应用的本地路由,见上),firstApp.urls又会找到views文件,执行它的hello函数(这个函数的结果就是要返回一个页面)。

from django.contrib import admin
from django.urls import path
from firstApp import views #导入某一个app
from django.urls import include,path
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', include("firstApp.urls")),    #将应用与url相关联
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5.接下来需要修改模板,大致就是告诉你html页面(也就是模板)在这个project中的哪个位置。打开myDjango下的settings.py,修改TEMPLATES下的DIRS部分。即写上模板的路径(这里就是上文放在firstApp下的html文件的位置)。

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"firstApp")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

6.最后用cmd运行project:python manage.py runserver。同样地得到url,同时记得本次修改的是index/这个位置,所以在浏览器中输入http://127.0.0.1:8000/index/,返回的就是myTemplate.html的页面内容了。
在这里插入图片描述
总结:
1.Django的Web框架遵循着MTV模式。这里涉及了Template模板和View视图。还没有对Model进行修改。MTV大致可以理解为,T是一个壳,即html页面的架构;M是填充物,与数据库相连。T中填入M,然后就是最后返回给用户看到的V,这样做的好处大概就是外观架构的修改(T)和具体的数据变更(M)可以分开处理。
2.这里涉及了许多路由的概念。其中urls文件,包括了本地路由和全局路由是为了将请求的url与指定的视图View建立联系。而修改settings中的TEMPLATES是为了让project运行的时候找到模板所在的位置。 此外,在建立url与view的联系时分为了本地和全局两个路由,我的理解是一个project可能有多个应用,有多个模板,一个应用下也可能有多个模板,所以project层的全局路由和app层的本地路由分开管理比较清楚,当然对于上面这个只有一个app一个模板的情况来说设置两个路由有些多此一举了。

发布了2 篇原创文章 · 获赞 0 · 访问量 18


所属网站分类: 技术文章 > 博客

作者:从新来过

链接:https://www.pythonheidong.com/blog/article/234867/a0e0cf386ce94c670876/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)