Django 的核心思想是让开发者快速构建应用程序。 掌握这个框架后,从概念到可以投入生产的 Web 应用程序的路径将大幅缩短。 但是,如果您还想更快,可以学习在 PyCharm 中创建 Django 应用。
本教程将通过一系列步骤指导您创建一个简单的 Django 应用程序,显示所在位置的当前气温。 为了增加互动性,这款应用还可供浏览其他随机位置的天气状况。
在本教程中,您将学习如何:
- 在 PyCharm 中创建 Django 项目。
- 编写模型、视图和模板。
- 进行 API 调用并处理响应。
- 连接到数据库并使用数据填充。
克隆仓库即可获取完整的应用程序代码。 要了解有关克隆的信息,请参阅 PyCharm 文档。
前提
本教程适合已经有数年 Python 经验的开发者。 因此,我们假设您的电脑上已经安装了 Python。 如果不是这样,也别担心! 开始在 PyCharm 中创建第一个项目时,您可以下载并安装需要的 Python 版本。
对 Django 的支持是一项专业功能,因此您需要 PyCharm Professional。 新用户有 30 天的免费试用期,如果您是学生或教师,可以申请免费教育许可证。 本教程基于已启用新 UI 的 PyCharm 2023.1。
有关不同操作系统的更多信息和安装说明,请参阅 PyCharm 文档。
开始构建应用
我们先迈出第一步。 步骤不多,最后,您将得到一个基础应用。
在 PyCharm 中创建 Django 项目
要创建项目,首先启动 PyCharm 并点击 New Project(新建项目)。 如果 PyCharm 已经在运行,可以从主菜单中选择 File | New Project(文件 | 新建项目)。
在打开的 New Project(新建项目)窗口中,指定以下信息:
- 选择 Django 作为项目类型。
- 输入项目所在目录的名称。 这也将用作项目名称。
- 为新 Django 项目创建虚拟环境,PyCharm 将在其中安装依赖项。 在本教程中,我们将选择 virtualenv 选项。
- PyCharm 可以立即在项目中创建 Django 应用程序。 务必在这里为应用程序命名。
准备好后,点击 Create(创建)。 PyCharm 创建文件结构,并安装 Django 和其他需要的依赖项。
点击窗口顶部的 Run(运行)图标启动 Django 服务器:
这将打开 Run(运行)工具窗口。 点击链接打开浏览器窗口:
在 PyCharm 中启动 Django 服务器只需要几分钟的时间。 这是一个好的开始,但最好的还在前面。
编写首个视图
现在,开始创建应用程序逻辑。 在 Django 中,在 views.py 中编写类或函数。
您可以随时点击 PyCharm 窗口左上角的文件夹图标,也可以按 ⌘1 / Alt+1 来探索项目的结构:
本教程包含可以节省大量时间的快捷键,例如按两次 ⇧ (Shift) 键可以打开 Search Everywhere(随处搜索)窗口。 这个快捷键可以找到任何内容,包括项目文件、设置和操作。
我们用它来快速打开 views.py。
输入 views,将光标移动到 meteo 处的 views.py,然后按 Enter:
temp_here在编辑器中粘贴以下代码:
requests将光标悬停在它上面,选择 Install package requests(安装软件包请求)。
temp_heregeocoderPyCharm 会安装软件包并将 import 语句添加到文件的开头。
那么,如何发出测试请求来确保一切按预期工作? 最简单的方式是在 Python 控制台中调用函数。
我们来使用另一个节省时间的方式 – Find action(查找操作)。 不用在菜单中滑动鼠标,也不用背下几十个快捷键,只需按 ⇧⌘A / Ctrl+Shift+A,然后搜索 Run File in Python Console(在 Python 控制台中运行文件)。
您不需要打出整个单词。 使用 rufipy 这样的词也会得到想要的结果
temp_here检查来自控制台输出的 API 响应。 这个字符串很长,但下面有说明性表示。
如果要探索响应,可以遵循以下步骤:
- 点击 3 次控制台输出,然后按 ⌘C / Ctrl+C 将其复制到剪贴板。
- 按 ⇧⌘N / Ctrl+Alt+Shift+Insert 创建临时文件,然后选择 JSON 文件类型(输入 js… 即可)。
- 粘贴响应并应用 Reformat Code(重新格式化代码)操作。 可以使用 Find action(查找操作)或按 ⌥⌘L / Ctrl+Alt+L。
temperature_2mhourly为了获取当前温度,我们必须将当前小时作为索引。 例如,如果现在是 14:30,我们将使用列表的第 14 项。
temp_here()['hourly']['temperature_2m'][14]根据当前时间替换 14,并在控制台中输入代码:
14.9 °C 是我们所在位置的当前温度。 您那里呢?
修改函数,让它从 API 响应中提取当前温度:
datetimeimport_datetimehttps://www.zhihu.com/video/1642864905538818049temp_heretemp_hereTIME_ZONE有关详情,请参阅 Django 文档。
要快速访问此设置,首先按两次 ⇧ (Shift),按几次 Tab 切换到 Symbols(符号),然后输入 time…。
temp_hererequest以下是 views.py 的样子:
temp_hererequestHttpResponsetemperature_unit如果您更喜欢使用摄氏度,则跳过此修改。
配置 URL
更新 urls.py,配置从浏览器访问应用的方式。 按两次 Shift,输入 urls,如上所述查找和打开。
urlpatternsdjango.urls.includeinclude'meteo.urls'Django 项目通常包含多个应用。 即使目前并非如此,也要考虑项目的未来发展。 因此,我们在对应文件夹中为每个应用程序创建 urls.py ,然后将它们全部添加到项目的 urls.py 中。
接下来,在 meteo 应用程序的文件夹中创建 urls.py。
在 Project(项目)工具窗口中右键点击 meteo 目录。
选择 New > Python File(新建 > Python 文件),输入 urls。
新创建的文件将打开。 使用以下代码填充:
temp_here它上线了!
点击右上角的 Rerun(重新运行)按钮重新运行 Django 服务器并确认操作:
在浏览器中打开 http://127.0.0.1:8000/meteo/。 您看到的内容应该类似于:
如果您不想在每次重新启动 Django 服务器时打开浏览器输入地址,或手动刷新页面,可以将 PyCharm 配置为代您完成这些操作。
打开 Run(运行)微件中的下拉菜单,选择 Edit configurations(编辑配置):
在左窗格中选择项目的配置,启用 Run browser(运行浏览器)复选框,然后将 meteo 添加到 url:
点击 OK(确定)应用更改。
基本上,应用已经可以运行了。 但它在浏览器中不太好看,而且仍然没有“随机位置天气”功能。 在接下来的步骤中,我们将引入模板并导入数据来解决这些问题。
改进体验
添加模板
temp_heretemp_here在 return 语句之前开始一个新行并输入“template = loader”。
django.template.loaderloaderimport_loaderhttps://www.zhihu.com/video/1642865606897614848get_template()现在,将 return 语句替换为以下两行:
点击 OK(确定)。 PyCharm 将创建 index.html 并打开它进行编辑。
文件现在为空。 使用 Live Template(实时模板)填充模板 html 代码。 输入 html:5,按 Tab:
在这里插入以下代码:
temp{‘temp’ : temp}℃℉接下来,重新运行 Django 服务器查看更改,并确保应用按预期工作。 如果您已按上述说明编辑了运行配置,浏览器窗口应自动打开:
创建数据库和模型
为了从 API 获取随机位置的温度数据,我们需要提供这些位置的坐标。
为此,使用 Juanma Hernández 在 CC BY 4.0 许可下提供的 World cities 数据库。 下载数据库并从归档提取 worldcities.csv。 如果您在 Kaggle 还没有帐户,则必须注册。
我们还需要将 Django 自动创建的 db.sqlite3 数据库添加到我们的 PyCharm 项目。
为此:
- 点击右侧的数据库图标打开 Database(数据库)工具窗口。 您也可以按 ⌘E / Ctrl+E 访问所有工具窗口:
2. 点击工具窗口左上角的 +,选择 Data Source > SQLite(数据源 > SQLite)。 输入 sq… 可以更快地找到所需选项:
3. 点击 File(文件)字段旁边的 …,在项目文件夹中查找 db.sqlite3 文件。
4. 您可能需要安装、更新或切换数据库驱动程序。 如果窗口底部出现警告,则点击链接执行所需操作:
5. 点击 OK(确定)。
为了将数据导入数据库,应在 Database(数据库)工具窗口中将 worldcities.csv 拖放到 db.sqlite3。 在打开的对话框中,移除不必要的列,只保留 city、lat、lng、country 和 id:
dnd_csv_to_dbhttps://www.zhihu.com/video/1642868239721095168现在,db.sqlite3 数据库包含 worldcities 表:
双击即可在编辑器中查看其内容。
Django 使用模型与数据库交互。 创建一个模型来实现从 worldcities 表读取数据。
Worldcitiesnull=Trueprimary_key=True以下是它的样子:
添加功能
temp_here在 PyCharm 中,这可以通过 Extract method(提取方法)重构轻松完成。
选择应移至单独函数的行,然后按 ⌥⌘M / Ctrl+Alt+M。 或者,使用 Find Action(查找操作):
extract_methodhttps://www.zhihu.com/video/1642866614906068992get_templocationget_temptemp_heretemp_somewhereget_tempImportErrorWorldcitiesorder_by(‘?’)first()random_itemtemp_somewherecontext您可能已经注意到装订区域中的 <> 图标。 点击以快速切换到 index.html:
{{ city }}temp_herecitytemp_heretemp_somewhere返回 index.html,添加指向 /discover 页面和首页的链接。 后者将始终显示当前位置的温度。 实时模板和代码补全可以节省大量时间:
要对 html 文件中的段落和链接使用实时模板,只需分别输入 p 或 a ,然后按 Tab。
要查看可用实时模板的完整列表,首先打开设置 (⌘ / Ctrl+Alt+S),转到 Editor > Live Templates(编辑器 > 实时模板),然后展开右窗格中的 Zen HTML 节点:
您可以重新运行服务器并试用应用程序:
还没结束
应用现在可以运行,但还有改进的空间。 最明显的是视觉外观,但也还可以添加额外功能。
使用 CSS
CSS 是使 Django 应用程序看起来更好的最快也最简单的方式。 例如,使用 Simple.CSS。
新外观:
将链接替换为按钮也将改善外观:
无需从 PyCharm 切换到浏览器即可看到编辑 index.html 的结果。 将鼠标悬停在编辑器窗口的右上角,选择 Built-in Preview(内置预览):
使用 Bootstrap
Bootstrap 是一个强大且免费的前端工具包。 要将它快速应用到 Django 应用,按如下所示编辑 index.html(有关详情,请参阅 Bootstrap 快速入门指南):
link查看结果:
Bootstrap 提供了多种自定义应用外观的方式。 您可以在文档中找到所有必要信息。
亲自尝试
countryWorldcities总结
在本教程中,我们学习了如何:
- 在 PyCharm 中创建 Django 项目。
- 编写视图和创建模板。
- 进行 API 调用并处理响应。
- 连接数据库和导入数据。
- 应用 CSS 和 Bootstrap 改善应用的视觉外观。