实践二:使用基于类的视图(class-based view)创建网页App

实践二 —— 使用基于类的视图(class-based view)创建网页App

实践内容介绍:在本次课我们采用基于类的视图创建两个网页页面home和about。学习者需要重点掌握Django项目的urls设置和app中的urls设置,每次创建新的app后,我们都需要将该app添加到项目的settings.py文件中的INSTALLED_APPS中。同时,我们也要熟练掌握如何在settings.py文件中设置模板(template)的路径。完成项目后的效果如下:

分别访问 http://127.0.0.1:8000/和http://127.0.0.1:8000/about,你将分别看到如下两个页面:

--------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

1. 完成实践一的环境部署

2. 进入虚拟环境

pipenv shell

3. 创建一个名为home的app(本案例中,我们将创建两个app,一个home,一个about,请同学们注意两个app的url是如何设置的。)

python manage.py startapp home

此时文件目录如下:

4. 将home添加到my_project/settings.py文件中

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'home', #新增内容
]

解释:每当我们新建了一个app后,都需要将该app的名字添加到settings.py文件下的INSTALLED_APP中,这样Django项目才知道你新建了一个app。

 5. 新建templates文件夹,与home和my_project文件夹在同一级目录

 

 6. 在my_project/settings.py文件中修改templates的路径,代码如下:

import os   #在页面上方导入os
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')], #更新该部分内容
        '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',
            ],
        },
    },
]

7. 在templates文件夹中新建一个home.html文件,并添加如下代码:

<h1>主页</h1>

当前目录结构如下图所示:

 8. 更新home/views.py中的内容

from django.views.generic import TemplateView

class HomePageView(TemplateView):
    template_name='home.html'

9. 更新urls.py文件

(1)更新app中的urls.py文件(app level)

在home中新建一个urls.py文件,并添加如下代码:

from django.urls import path
from . import views
urlpatterns = [
    path('', views.HomePageView.as_view(), name='home'),
]

urls.py在home文件夹中的位置如下:

(2)更新项目的urls.py文件(project level)

打开my_project中的urls.py文件,并更新代码

from django.contrib import admin
from django.urls import path, include #引入include函数

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home.urls')) #新加代码
]

注意:每次新建了app后,我们都需要修改项目(project level)和app(app level)两个地方的urls.py文件。

10. 运行本地服务器,查看效果

python manage.py runserver

打开链接 http://127.0.0.1:8000/ 

效果图如下:

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

创建about页面(第二个app)

11. 使用 ctrl+c 快捷键停止本地服务器,这样我们才能继续在终端输入代码

12. 执行代码,创建一个名为about的app

python manage.py startapp about

此时,myweb文件夹中会自动创建一个名为about的文件夹,当前的文件结构如下:

解释:myweb文件夹中现在包括了4个文件夹,my_project是Django项目文件(project level),about和home是app文件夹(app level), templates是模板文件夹,用来存放html文件。

注意:接下来我们分别要对my_project中的settings.py文件, templates, about/views.py, about/urls.py,my_project/urls.py进行更新

13. 修改my_project/settings.py文件,将刚创建的about应用添加到INSTALLED_APPS中,更新后的代码如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'home', 
    'about',#新增内容
]

14. 在templates文件夹中新建about.html文件,并添加如下代码:

<h1>关于我们</h1>

 15. 更新about/views.py(文件about文件夹中的views.py文件)

from django.views.generic import TemplateView

class AboutPageView(TemplateView):
    template_name='about.html'

解释:在views.py文件中,我们新建了一个AboutPageView的类,同时通过 template_name='about.html' 语句指定该类的模板名称为about.html。这样,当我们调用AboutPageView时,程序就知道去templates中寻找about.html文件。

16. 更新urls.py(两个地方,包括project level的url和app level的url)

(1)更新about的urls.py文件(app level)

from django.urls import path
from . import views
urlpatterns = [
    path('', views.AboutPageView.as_view(), name='about'),
]

(2)更新Django项目的urls.py文件 (project level)

from django.contrib import admin
from django.urls import path, include 

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('home.urls')) ,
    path('about/', include('about.urls')) #新加代码
]

注意:此处about的path路径为‘about/’

17. 运行本地服务器

python manage.py runserver 

分别访问 http://127.0.0.1:8000/和http://127.0.0.1:8000/about,你将分别看到如下两个页面:

--------------------------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------

总结:本节内容讲解了如何使用基于类的视图(class-based)创建一个app,新建了templates文件夹用于前端的html文件管理,设置了项目和app中的urls.py文件。

每次我们在创建一个app时,都是在view, templates,urls和settings中来回穿梭(引入数据库models后,也将对它进行编辑)

 

posted @ 2025-02-28 17:26  天净沙秋思  阅读(786)  评论(0)    收藏  举报