本文概述
Django是一个广泛使用的免费, 开源和高级Web开发框架。它为开箱即用的开发人员提供了许多功能, 因此开发可以快速进行。但是, 以此为基础构建的网站是安全, 可扩展且可维护的。
目标
本教程的目的是构建一个博客应用程序, 在其中可以通过管理面板创建和更新博客内容。博客内容显示在页面上, 可以根据需要删除。总体应用程序提供CRUD(Create, Read, Update, Delete)功能。
本教程不使用Java, CSS等前端技术, 而是着重介绍每个Django Web开发中所需的基本但必不可少的概念。
必需的设置
- Git Bash:所有操作系统的用户都可以使用它。所有与Django相关的命令和Unix命令都是通过它完成的。要下载Git bash:单击Me。
- 文本编辑器:可以使用任何文本编辑器, 例如Sublime Text或Visual Studio Code。对于以下项目, 将使用Sublime Text。
- Python 3:可以在”下载Python”中下载最新版本的Python。
注意:如果你了解Python的基础知识并了解循环, 函数, 类等, 以及bash或命令行的一些知识, 则可以轻松地跟随本教程。
虚拟环境
虚拟环境充当与Python相关的项目的依赖项。它可以作为一个独立的容器或隔离的环境来安装所有与Python相关的软件包以及与特定项目相关的所需版本。由于将推出新版本的Python, Django或程序包等, 因此在虚拟环境的帮助下, 你可以使用特定于项目的旧版本。总结中, 你可以启动一个与版本2.0的Django相关的独立项目, 而另一个与版本3.0的Django相关的独立项目可以在同一台计算机上启动。
注意:创建虚拟环境的方法有很多, 但是下面仅显示一种方法。
创建虚拟环境的步骤
你可以通过在桌面中使用” mkdir”命令来创建名为” project-blog”的新目录。
使用” cd”命令将目录更改为” project-blog”。
虚拟环境是使用’python -m venv env’创建的, 其中env是’ls’命令所示的虚拟环境。
对于激活虚拟环境:可以使用”源”命令来激活虚拟环境, 其中需要启用或激活”脚本”文件夹。如果你成功激活了虚拟环境, 则” env”将显示在括号中。
安装所需的软件包:你可以使用’pip install django’在特定的虚拟环境中安装Django。
注意:Linux和Mac用户需要在命令中专门使用” python3″, 因为版本2的Python已预先安装在他们的计算机中。另外, 最好使用现在的版本3, 直到2020年之后Python将不再支持版本2。
创建一个Django项目
第一步是使用’django-admin startproject project_name’命令创建你的项目, 其中’project_name’是’django_blog’。此外, 它还会在我们新创建的项目中生成大量文件, 你可以根据需要在Django文档中进行进一步研究。
使用” cd”命令将目录更改为新创建的项目, 并使用” ls”命令查看创建的文件。
你可以使用” python manage.py runserver”运行项目。
可以在你喜欢的浏览器(Google Chrome, Mozilla Firefox等)中查看该项目。你可以进入浏览器并在URL中键入” localhost:8000″或” 127.0.0.1:8000″, 如下所示。
注意:要获得与上述相同的页面, bash中的服务器需要在后台运行。另外, 如果需要, 你可以通过在Windows / Linux中单击” Ctr + C”并在Mac中单击” Cmd + C”来手动停止服务器。
开始新项目
为了在Django中创建新项目, 始终需要两步, 如下所示。
第一步是使用” python manage.py startapp app_name”命令创建一个应用, 其中, app_name在你的情况下为” blog”。在Django中, 单个项目有许多应用程序, 其中每个应用程序都充当特定项目的单个特定功能。
第二步是通过更改” django_blog / settings.py”的INSTALLED_APP部分, 使我们的项目了解我们新创建的应用程序。
改变我们的模型
Django使用” SQLite”作为默认数据库, 该数据库很轻, 仅用于小型项目, 这对这个项目很好。它使用”对象关系映射器(ORM)”, 这使得使用数据库确实非常容易。实际的数据库代码未编写, 而数据库表是通过’models.py’中的’class’关键字创建的。
在” blog / models.py”内部, 你需要创建一个名为” Post”的新模型。这是一个类, 稍后将成为数据库表, 当前从” models.Model”继承。就像在标准博客中一样, 某个”帖子”包含标题, 该标题将是一个称为CharField的字段。这是一个基于文本的列, 接受强制性参数作为” max_length”, 在你的情况下恰好是50。另外, 还有一个名为”内容”的字段, 即TextField, 它包含标准博客中” Post”的详细文本。定义了double underscore(‘str’)方法, 该方法将覆盖字段” title”并返回实际” title”的名称, 而不是某些对象。
进行迁移
” python manage.py makemigrations”是第一步, 创建后将读取” models.py”。它创建一个名为” migrations”的新文件夹, 其中有一个名为” 0001_initial.py”的文件, 该文件可在整个数据库中移植。
迁移到数据库
这是第二步, ” python manage.py migration”读取新创建的文件夹” migrations”并创建数据库, 并在模型发生更改时演化数据库。
注册到管理员
让我们转到’blog / admin.py’并使用’from .models import Post’导入一个名为’Post’的模型。要将模型注册到管理员, 命令是” admin.site.register(Post)”。
在”管理”面板中创建超级用户和查看
你需要先创建一个超级用户, 然后才能访问”管理”面板。为此, 请使用” winpty python manage.py createsuperuser”。
注意:winpty是bash特定的命令, 用于与Windows控制台程序进行通信。
通过命令python manage.py runserver在bash中在后台运行服务器。转到浏览器, 然后在URL中键入以下内容。
然后填写你的详细信息, 即你之前创建的用户名和密码:
之后, 使用我们新创建的模型” Post”查看你的管理面板。
通过单击”添加”按钮更改”发布”的内容。填写信息并”保存”详细信息。
更改视图和网址
移至’blog / views.py’并进行如下所示的更改。添加函数” blog_list”, 该函数接受请求。进行查询, 获取使用’Post.objects.all()’创建的所有对象, 并将其保存到帖子中。有一个新创建的字典作为”上下文”, 其中对象可以作为键传递并通过模板” blog-list.html”获得, 这是通过在render的帮助下返回响应来完成的。
在” django_blog / blog”中创建一个名为” urls.py”的新文件, 并添加以下更改。相对于视图” blog_list”和” urlpatterns”而言, 这是网站上特定页面的路径列表。当前, <b>包含空字符串和视图名称。
让我们移至” django_blog / urls.py”并导入包含并更改为” urlpatterns”。然后通过包含将路径添加到你的应用程序URL。同样, 当用户通过” posts /”进行路由时, 它会被定向到我们的” blog.urls”。
制作和更改模板
让我们创建一个通常包含’HTML’并包含自己的模板语言’Jinja2’的templates文件夹。该文件夹需要命名为’templates / blog / blog_list.html’, 这是惯例。
你可以在下面看到与” HyperTextMarkup语言(HTML)”相关的语法, 其中” h1″代表大标题, 带有列表元素li的无序列表(ul)。同样, 与” Jinja 2″有关的” for”循环语法也被使用, 其中每个对象被称为” list”的元素” blog_list”作为关键字从” blog / views.py”作为键传递时被使用。
在网页上查看名为”第一篇文章”的”标题”。
让我们从管理面板中添加与上述相同的其他信息, 并将第二个帖子标题命名为”第二个帖子”。
添加信息并重新加载主页后, 信息将被更新。
每个帖子的详细信息
你将创建每个单独的页面, 其中包含有关帖子标题及其内容的信息。 ” URL”将是” localhost:8000 / posts /’id'”, 其中id表示Django本身给每个” Post”附加的唯一编号或主键。
让我们在’blog / view.py’中创建一个函数’blog_detail’, 该函数接受id作为参数。另外, 有一个查询仅用于获取特定ID并保存到” each_post”。同样, 如上所述, 所需的信息作为上下文传递到” blog_detail.html”。
更改了” blog / urls.py”中的url, 其中路径包含” <id>”, 它接受整数形式的唯一ID。假设用户来到” posts /”仅会看到所有帖子, 但是当用户进入” posts / 1″时, 他们只会看到有关第一个创建的帖子的信息。
让我们创建一个新文件’blog / blog_detail.html’, 然后进行以下更改。由于blog_detail是作为上下文传递的, 因此可以使用点表示法来访问”标题”和”内容”。
转到浏览器的URL并输入相同内容以获取单个帖子。由于用于创建的第一信息的” id”为” 1″, 其中第二信息将为” 2″, 依此类推, 对于新创建的信息, 依此类推。
删除帖子
让我们定义blog_delete, 它接受请求和ID。同样, 查询在哪里’Post.objects.get(id = id)’获取具有唯一ID的对象并将其保存到each_post。之后, 调用” each_post.delete()”以删除” Post”。最后, 从” django.http”模块导入HttpResponseRedirect, 该模块用于将页面重定向到” / posts /”
。在” urls.py”中, 导入” blog_delete”, 并将路径设置为” <id> / delete”, 其中以delete结尾的id将删除该特定对象或信息。
让我们在” urls.py”中键入以下内容来删除帖子。
最后, 当” posts / 1 / delete /”被调用时, 页面被重定向到” / posts”, 而首页上只有一个帖子。
结论
恭喜你完成了本教程!你已经学习了Django Web开发的基础知识, 并且了解CRUD功能。另外, 有关特定主题的更多详细信息, 请转到Django文档。
评论前必须登录!
注册