django5入门【03】新建一个hello界面

文章目录

1、前提条件⭐

将上一节创建的 Django 项目导入到 PyCharm 中。

2、操作步骤总结

(1)在 HelloDjango/HelloDjango 目录下,新建一个 views.py 文件。

(2)在 HelloDjango/HelloDjango/urls.py 文件中,配置 URL 路由信息。

(3)打开终端,执行 python manage.py runserver 命令,启动开发服务器。

(4)在浏览器中输入网址 http://127.0.0.1:8000/hello/ 查看效果。

(5)问题探讨:为什么输入 http://127.0.0.1:8000/ 时会报错?

(6)深入探讨:参考 Django 源码,分析默认路由行为。

3、实际操作示例

(1)在 HelloDjango/HelloDjango 目录下,新建 views.py 文件,内容如下:

python 复制代码
from django.http import HttpResponse


def say_hello(request):
    return HttpResponse('Hello Django!')

(2)在 HelloDjango/HelloDjango/urls.py 文件中,配置 URL 路由信息,内容如下:

python 复制代码
"""HelloDjango URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.1/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
-----------------翻译如下↓---------------------
HelloDjango URL 配置

`urlpatterns` 列表将 URL 路由映射到视图。有关更多信息,请参阅:
https://docs.djangoproject.com/en/4.1/topics/http/urls/
示例:
函数视图
    1. 添加导入:from my_app import views
    2. 将 URL 添加到 urlpatterns:path('', views.home, name='home')
基于类的视图
    1. 添加导入:from other_app.views import Home
    2. 将 URL 添加到 urlpatterns:path('', Home.as_view(), name='home')
包含其他 URL 配置
    1. 导入 include() 函数:from django.urls import include, path
    2. 将 URL 添加到 urlpatterns:path('blog/', include('blog.urls'))
"""

from django.contrib import admin
from django.urls import path
from HelloDjango import views  # 导入 HelloDjango模块的views.py文件 ↓

urlpatterns = [
    path("admin/", admin.site.urls),
    path("hello/", views.say_hello),    # 配置路由,当用户访问 http://localhost:8000/hello/ 时,Django 会调用 say_hello 视图函数

]

(3)打开终端,执行运行命令 python manage.py runserver

powershell 复制代码
(django_study_3_11) PS E:\notes\django\django项目学习\03添加一个视图界面\HelloDjango> python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
October 21, 2024 - 21:43:34
Django version 4.1, using settings 'HelloDjango.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

(4)在浏览器中输入网址 http://127.0.0.1:8000/hello/ 查看效果:

(5)问题探讨:为什么输入 http://127.0.0.1:8000/ 时报错?

​ 翻译一下:

屏蔽一下新加的路由

​ 发现界面正常了

​ 现在翻译一下:

分析: 需要满足两个条件才会显示上述界面:

  • setting.py 文件中 DEBUG=True
  • setting.py 文件中urlpatterns 为初始值

因此: 虽然项目默认DEBUG=True,但由于在 urlpatterns 中已经配置了其他路由(path("hello/", views.say_hello)),并不满足上述两个条件。同时,未在 urlpatterns 中配置默认路由(例如:path('', views.home)),当用户访问根路径 / 时,Django 将无法找到匹配的视图,因此会出现报错。

⭐注意 写成:path('/',views.home)也不对!!

Django 的 URL 路径不需要也不接受 斜杠 / 作为路径的开头。Django 会自动处理 URL 路径的斜杠问题,因此在 path() 中的第一个参数应当直接写路径片段,而不包含开头的斜杠。

(6)如果想要深入研究为什么会这么显示,请参考django源码:

相关推荐
2301_809204704 小时前
JavaScript中严格模式use-strict对引擎解析的辅助.txt
jvm·数据库·python
zjy277774 小时前
mysql如何选择合适的索引类型_mysql索引设计实战
jvm·数据库·python
Aaswk4 小时前
Java Lambda 表达式与流处理
java·开发语言·python
万邦科技Lafite5 小时前
京东item_get接口实战案例:实时商品价格监控全流程解析
java·开发语言·数据库·python·开放api·淘宝开放平台
Cyber4K6 小时前
【Python专项】进阶语法-系统资源监控与数据采集(1)
开发语言·python·php
苍煜7 小时前
Java开发IO零基础吃透:BIO、NIO、同步异步、阻塞非阻塞
java·python·nio
AllData公司负责人8 小时前
通过Postgresql同步到Doris,全视角演示AllData数据中台核心功能效果,涵盖:数据入湖仓,数据同步,数据处理,数据服务,BI可视化驾驶舱
java·大数据·数据库·数据仓库·人工智能·python·postgresql
Flittly9 小时前
【LangGraph新手村系列】(5)时间旅行:浏览历史、分叉时间线与修改过去
python·langchain
2301_782040459 小时前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python
yaoxin5211239 小时前
400. Java 文件操作基础 - 使用 Buffered Stream I/O 读取文本文件
java·开发语言·python