本文概述
- 目标
- 必需的设置
- 虚拟环境
- 创建虚拟环境的步骤
- 创建一个Django项目
- 开始新项目
- 改变我们的模型
- 结论
目标 本教程的目的是构建一个博客应用程序, 在其中可以通过管理面板创建和更新博客内容。博客内容显示在页面上, 可以根据需要删除。总体应用程序提供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相关的项目的依赖项。它可以作为一个独立的容器或隔离的环境来安装所有与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” , 而首页上只有一个帖子。
文章图片
结论 【Python Django Web开发详细教程】恭喜你完成了本教程!你已经学习了Django Web开发的基础知识, 并且了解CRUD功能。另外, 有关特定主题的更多详细信息, 请转到Django文档。
推荐阅读
- Jupyter Notebook教程(权威指南)
- 使用Scikit-learn支持向量机
- 在Python中处理分类数据
- 简化Python中的情感分析
- 在Python中使用LSTM进行股票市场预测
- Python中的马尔可夫链(入门教程)
- Python读取和编辑PDF和Word文档
- 在Windows上设置Python进行机器学习
- 用Python存储和访问大量图像的三种方法