介绍
如果你跟随了我们的 Django Development系列,你已经成功创建了一个Django应用程序,允许拥有管理权限的用户通过Django的管理用户界面仪表板添加 评论 和 ** 帖子** 。
在这个教程中,我们将创建Django views ,使我们的网络应用程序能够正确处理网络请求并返回所需的网络回复. 如[Django docs](https://docs.djangoproject.com/en/4.0/topics/http/views/]所定义,一个网络响应可以是网页的HTML内容,重定向,或HTTP出错(如"404"). 查看函数的代码在技术上可以在您的工程的任何地方生活,只要它位于您的Python路径上. 然而,有一些关于命名和放置存在这些视图功能的文件的通俗惯例,我们将遵循这些做法.
一旦您完成了本教程的步骤,您的Django博客网站将将最近的帖子拖入您的IP或域 / 帖子
URL。
前提条件
本教程是Django Development系列的一部分(https://www.digitalocean.com/community/tutorial_series/django-development),是该系列的延续。
如果你没有跟随这个系列,我们正在做以下假设:
- 联合国 你安装了Django版本4或更高。
- 联合国 您已经将您的 Django 应用程序连接到数据库 。 我们正在使用MySQL,通过遵循Django系列的第二部分
如何创建Django App并将其连接到数据库
(https://andsky.com/tech/tutorials/how-to-create-a-django-app-and-connect-it-to-a-database),你们可以实现这种连接。 ` - 联合国 您正在使用基于 Unix 的操作系统, 最好是 Ubuntu 22.04 云端服务器, 因为这是我们测试过的系统 。 如果您想在类似环境中设立Django,请参考我们的教程:
如何在Ubuntu22.04上安装Django并建立一个发展环境
(https://andsky.com/tech/tutorials/how-to-install-django-and-set-up-a-development-environment-on-ubuntu-22-04)。 - 联合国 您已经设置了 Django 管理界面 。 您可以遵循我们的Django Admin教程来完成此任务。 .
由于本指南主要涉及 Django 视图,即使您有稍微不同的设置,您也可能能够遵循。
步骤 1 — 创建视图函数
在您的终端中,您首先需要进入相关目录并激活您的Python虚拟环境。如果您一直在跟随这个系列,您可以输入下面的命令。当您开发应用程序时,重要的是始终使用Python编程环境,以确保您的代码包含并使用正确的设置。
1cd ~/my_blog_app
2. env/bin/activate
现在你的虚拟环境已激活,让我们导航到博客网站
目录,在那里我们将打开一个Python文件,并创建我们的第一个视图(功能)(LINK0)。
1cd ~/my_blog_app/blog/blogsite
打开views.py
文件进行编辑,使用 nano 或您选择的文本编辑器。
1nano views.py
打开文件时,应该填充类似于此的代码:
1[label /my_blog_app/blog/blogsite/views.py]
2from django.shortcuts import render
3
4# Create your views here.
我们将保留从django.shortcuts
库中导入render()
函数的 import statement 函数。 render()
函数允许我们将模板和背景相结合,以便我们可以返回适当的HttpResponse
对象。
接下来,我们将添加我们的第一个视图,欢迎用户到索引页面。我们将从Django的http
库导入HttpResponse()
函数。
1[label ~/my_blog_app/blog/blogsite/views.py]
2from django.shortcuts import render
3from django.http import HttpResponse
4
5def index(request):
6 return HttpResponse('Hello, welcome to the index page.')
接下来,我们将添加一个功能,该功能将显示我们将在教程中稍后创建的个别帖子。
1[label ~/my_blog_app/blog/blogsite/views.py]
2...
3def individual_post(request):
4 return HttpResponse('Hi, this is where an individual post will be.')
我们的最终views.py
文件现在将如下。
1[label ~/my_blog_app/blog/blogsite/views.py]
2from django.http import HttpResponse
3from django.shortcuts import render
4
5def index(request):
6 return HttpResponse('Hello, welcome to the index page.')
7
8def individual_post(request):
9 return HttpResponse('Hi, this is where an individual post will be.')
在 nano 中,您可以按CTRL
和X
,然后按Y
,然后按ENTER
。
目前,这些功能没有指定的URL,所以我们必须将其添加到我们的URL配置文件中的urlpatterns
块中。
步骤 2 — 地图 URL 到视图
借助Django,我们可以设计自己的URL来与我们的应用程序一起使用,这是用纯粹的Python进行的,使用一个通常称为您的URLconf或URL配置
文件的文件。
为了显示网页,Django首先必须确定要使用的 " URLconf " 根模块,然后着手寻找 " urlpatterns " ,即包含所有URL图案的列表数据结构。 Django然后通过每个URL模式,直到找到第一个匹配的. 一旦找到匹配,Django就会找到相关视图,该视图函数将接收与URL模式和"Httprequest"对象相关的数据. 如果整个过程在任何时间出现故障,则显示一个错误处理视图.
在本节中,我们将在我们的应用程序的两个不同的目录中使用两个不同的urls.py
文件。
在~/my_blog_app/blog/blogsite
目录中,打开urls.py
文件 - 也称为您的URLconf文件 - 进行编辑。
1nano urls.py
更改文件,以便它与下面的文件相同,与urlpatterns
列表。
1[label ~/my_blog_app/blog/blogsite/urls.py]
2from django.urls import path
3from . import views
4
5urlpatterns = [
6 path('', views.index, name='index'),
7 path('post/', views.individual_post, name='individual_post')
8]
当您完成添加上面的行时,保存并关闭文件。
一旦我们更新了blogsite
目录的 URLconf 文件,我们会将其添加到blog
目录的 URLconf 中,否则它将不会被识别。我们需要这样做,因为它在我们的设置文件中设置为ROOT_URLCONF
。
要在我们的博客
URLconf中包含我们的博客
URLconf,我们需要导航到该目录。
1cd ~/my_blog_app/blog/blog
一旦你在那里,你可以用 nano 或你选择的其他文本编辑器打开 URLconf 文件。
1nano urls.py
在此文件中,我们将添加下列行,以包含我们刚刚工作过的 /blogsite/urls.py
文件,这在第二行中表示。
1[label ~/my_blog_app/blog/blog/urls.py]
2from django.contrib import admin
3from django.urls import include, path
4
5urlpatterns = [
6 path('admin/', admin.site.urls),
7 path('', include('blogsite.urls'))
8]
保存并关闭文件。
现在让我们打开一个网页浏览器,以便导航到我们创建的URL,并验证它们是否显示了我们添加到视图中的文本. 我们需要进入主目录才能访问服务于Django应用程序的manage.py
文件。
1cd ..
您可以用下面的 IP 地址代替0.0.0.0
。
1python manage.py runserver 0.0.0.0:8000
在您的 Web 浏览器中,导航到您的 IP 地址,端口 8000:
1your-server-ip:8000
您将收到一个类似以下的网页:
然后,导航到以下URL:
1your-server-ip:8000/post/
从这里开始,应显示以下网页:
我们现在已经验证了这两个urls.py
文件是有效的,数据显示了我们所期望的。
第3步:创建一个博客
现在你已经了解了URL模式和视图如何工作的基本知识,让我们添加一个博客帖子,让它显示在网页上,而不是我们在Python文件中加密的文本。
我们将通过我们之前设置的 admin 页面(https://andsky.com/tech/tutorials/how-to-enable-and-connect-the-django-admin-interface# step-6-%E2%80%94-verify-that-blog-app-has-been-added-to-admin)创建一个帖子。随着您的服务器为 Django 应用程序提供服务,请使用 Web 浏览器导航到 admin Blogsite
页面:
1your-server-ip:8000/admin/blogsite/
在接口中,点击位于帖子
行中的+添加
链接,以开始填充数据库以示例博客帖子。
点击链接后,您将收到这样的输入表格:
每当你想添加一篇文章时,你会去这个页面这样做. 或者,你可以用更改
链接编辑帖子。
在表格中,您将能够编辑以下字段:
字段 QQ 内容
- -? - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
以「我的第一个博客邮报」为例。
slug ' | 指URL中用人可读关键词识别有效网络地址元素的部分。 这一般取自网页的标题,因此在这种情况下,我们可以使用 " 我的第一个博客 " 。 这是你博客文章的正文。 例如,我们将增加
你好,世界!的字样,但这就是你们可以动词的地方。
授权人 ' 此处添加您的相关名称或用户名。 我们将使用`Sammy'.
填写您认为适合测试目的的博客帖子表格。
一旦您已将示例数据添加到页面中,请点击保存
按钮,您将收到以下确认页面:
恭喜您!您创建了您的第一个博客文章!
接下来,让我们检查它是否在MySQL数据库中添加了包含我们刚刚输入到管理器界面中的数据的行。
第4步:显示数据库数据
在这一点上,我们需要进入MySQL,因此通过键入CTRL + C
来停止终端的当前服务器流程,然后打开您的MySQL解释器。
1mysql -u djangouser
一旦进入MySQL提示,请进入blog_data
数据库(或为您的项目正确的数据库):
1use blog_data;
然后显示blogsite_post
表的内容。
1select * from blogsite_post;
您将收到类似于以下的输出,该输出应该显示您在管理员用户界面中添加的信息。
1[secondary_label Output]
2+----+--------------------+--------------------+---------------+----------------------------+--------+
3| id | title | slug | content | created_on | author |
4+----+--------------------+--------------------+---------------+----------------------------+--------+
5| 1 | My First Blog Post | my-first-blog-post | Hello, World! | 2020-05-14 00:30:03.186564 | Sammy |
6+----+--------------------+--------------------+---------------+----------------------------+--------+
71 row in set (0.00 sec)
正如输出中所示,我们已添加的帖子的数据有一行,现在让我们将这些数据引用到帖子的视图函数中。
导航到您的blogsite
应用程序中的views.py
文件的位置。
1cd ~/my_blog_app/blog/blogsite
现在打开文件,以便我们可以包括我们的新数据。
1nano views.py
将文件编辑为与下面的文件相同。
1[label ~/my_blog_app/blog/blogsite]
2from django.shortcuts import render
3from django.http import HttpResponse
4from .models import Post
5
6def index(request):
7 return HttpResponse('Hello, welcome to the index page.')
8
9def individual_post(request):
10 recent_post = Post.objects.get(id__exact=1)
11 return HttpResponse(recent_post.title + ': ' + recent_post.content)
我们还从HttpResponse
中删除了引用的字符串,并用我们博客帖子的数据取代了它. 为了参考特定对象的数据,我们正在使用与我们想要显示的对象相关联的博客帖子ID,并将该ID存储在名为recent_post
的变量中。
一旦您保存并关闭了文件,请导航到manage.py
文件的位置,运行Django应用程序。
1cd ~/my_blog_app/blog
2python manage.py runserver 0.0.0.0:8000
从一个网页浏览器,导航到以下地址:
1your-server-ip:8000/post/
在这里,我们将看到我们所做的更改;页面将类似于此,显示您添加到帖子的文本。
当您完成检查页面时,请在终端中按CTRL + C
,以阻止流程运行。
要禁用您的编程环境,您可以键入禁用
命令,然后退出服务器。
结论
在本教程中,我们创建了视图,绘制了URL模式,并从我们的博客帖子数据库中显示了网页上的文本。
接下来的教程将涵盖如何通过使用HTML创建Django 模板 来真正使这一点更美观。