使用Django搭建web应用程序(二)

上篇中我们使用超级管理员权限创建了数据,本片我们接着将自定义的网页展示在主页上

1. 映射URL

用户通过在浏览器输入URL来请求网页,其中主页的URL最重要,当前基础URL(http://127.0.0.1:8000/)返回的是默认的Django网站,只是让我们知道正确的建立了项目,并不是我们自己的主页。

打开项目主文件夹(文件夹中包含ashi.py,settings.py,urls.py, wsgi.py,后面用文件夹1代指),打开其中的urls.py文件,修改为以下内容

 1 """pizzeria URL Configuration
 2 
 3 The `urlpatterns` list routes URLs to views. For more information please see:
 4     https://docs.djangoproject.com/en/3.1/topics/http/urls/
 5 Examples:
 6 Function views
 7     1. Add an import:  from my_app import views
 8     2. Add a URL to urlpatterns:  path('', views.home, name='home')
 9 Class-based views
10     1. Add an import:  from other_app.views import Home
11     2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
12 Including another URLconf
13     1. Import the include() function: from django.urls import include, path
14     2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
15 """
16 from django.contrib import admin
17 from django.urls import path
18 from django.conf.urls import include, url
19 
20 urlpatterns = [
21     path('admin/', admin.site.urls),
22     path('', include('pizzas.urls')),
23 ]

其中最重要的是第21,22行代码,urlpatterns中包含了本项目中请求的所有URL,目前有admin  和 默认主页面

此时我们还需要在应用程序所在文件夹中(其中包含models.py、 admin.pyviews.py,后面用文件夹2代指 )创建文件urls.py

 1 """定义pizzas的URL模式"""
 2 
 3 from django.conf.urls import url    # 将URL映射到视图
 4 from django.urls import path
 5 from . import views     # 从当前urls.py所在的文件夹中导入views
 6 
 7 urlpatterns = [
 8     # 主页
 9     path('', views.index, name='index'),    # 第二个实参制定了要调用的视图函数,第三个实参将URL模式名称指定为index,让我们能够在代码的其他地方使用它
10 ]

2. 编写视图

视图函数接收请求中的信息,准备好生成网页所需要的数据,再将这些数据发送给浏览器

应用程序所在文件夹中的views.py是执行命中python manage.py startapp时自动生成的,将其修改为以下内容

1 from django.shortcuts import render
2 
3 # Create your views here.
4 
5 
6 def index(request):
7     """披萨网站的主页"""
8     return render(request, 'pizzas/index.html')

3. 编写模板

模板指定了网页是什么样的, 而每当网页被请求时, Django将填入相关的数据。

模板让你能够访问视图提供的任何数据 。

首先按照这个路径创建一个文件:

文件夹2 enplates文件夹2名index.html

这样做的目的是建立了Django能够明确解读的结构,在项目很大包含许多应用程序时更加明确。

<p>Welcome to my PIZAA shop!</p>

<p>Here you can get all kinds of pizzas, and you can also see how to make pizza.</p>

此时再重新请求项目的基础URL时,我们将看到网页展示的是我们所创建的index.html的内容

中间遇到的报错:

TypeError: view must be a callable or a list/tuple in the case of include().

原代码

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', 'pizzas.urls', namespace='pizzas'),
]

解决方法:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pizzas.urls')),
]

如果要用namespace= 'pizzas',需要在文件夹2的urls.py中添加:

app_name = 'pizzas'

最懒的人就是整天忙得没时间学习、反思、成长的人。
原文地址:https://www.cnblogs.com/jockeyhao/p/14706044.html