pycharm创建django项目,附代码

基于官方文档操作,已附代码,有小的改动

原文地址:创建并运行您的第一个 Django 项目 | PyCharm 文档

代码:https://github.com/feiniu55666/DjangoProject4

启用 Django 插件

此功能依赖于 Django 插件,该插件默认情况下已捆绑并在 PyCharm 中启用。 如果相关功能不可用,请确保没有禁用该插件。

  1. 按 CtrlAlt0S 打开设置,然后选择 插件。

  2. 打开 已安装 选项卡,找到 Django 插件,并选中插件名称旁边的复选框。

在本教程中,我们将创建一个基本的待办事项应用程序。

开始之前

确保满足以下前提条件:

  • 您正在使用 PyCharm 版本 2022.2 或更高版本。 如果您还没有 PyCharm,请从 此页面下载。 要安装 PyCharm,请根据您的平台遵循相应的说明。

本教程基于以下假设创建:

  • Python 3.11

  • Django 4.2。

创建新项目

  1. 转到 文件 | 新建项目 ,或单击 新建项目 按钮,在 欢迎屏幕中。 新建项目 对话框打开。

    创建一个 Django 项目

  2. 在 新建项目 对话框中,执行以下操作:

    • 指定项目类型为 Django。

    • 如有需要,请更改默认项目位置。

    • 保留默认的 项目venv 解释器类型。

  3. 点击 更多设置更多设置 ,并在 应用程序名称(A) 字段中指定 todo。

  4. 点击 创建。

探索项目结构

新创建的项目包含 Django 特定的文件和目录。

项目的结构在 项目工具窗口 (Alt01 )中可见:

Django 项目结构

  • myDjangoProject 目录是您的项目的容器。 它以粗体字体表示。

  • 嵌套目录 myDjangoProject 是您的项目的实际 Python 包。

  • myDjangoProject/__init__.py :此空文件告诉 Python 该目录应被视为 Python 包。

  • myDjangoProject/settings.py :此文件包含 您的 Django 项目的配置

  • myDjangoProject/urls.py :此文件包含 您的 Django 项目的 URL 声明

  • myDjangoProject/wsgi.py :此文件定义了 WSGI 兼容的 Web 服务器为您的项目提供服务的入口点。 有关更多信息,请参阅 如何使用 WSGI 部署

  • 模板 目录目前为空。 它将包含 Django 模板。

  • 嵌套目录 todo 包含开发 Django 应用程序所需的所有文件:

  • 嵌套目录 migrations 目前仅包含包文件 _init_.py ,但将来会用于将您对模型所做的更改(添加字段、删除模型等)传播到数据库架构中。 阅读迁移描述 此处

  • manage.py 是一个命令行工具,可让您与您的 Django 项目交互。 有关更多信息,请参阅 Django 文档

启动 Django 服务器

Django 服务器运行/调试配置 会自动创建。 如果需要,您可以通过在主工具栏的运行/调试配置列表中选择 编辑配置(E) 命令来编辑它:

编辑配置

例如,您可以选择在配置启动时自动打开一个浏览器窗口:

Django 服务器的运行/调试配置

通过点击  运行 myDjangoProject 配置。 如果浏览器窗口未自动打开,请点击 运行 工具窗口中的链接。

以下页面打开:

Django 服务器测试页面

创建模型

Django 模型定义了数据的字段和行为。 它们由 Python 类表示,这些类是 django.db.models.Model 类的子类。

让我们为我们的待办事项应用程序创建一个 ToDoItem 模型。 为此,打开 todo/models.py ,并填入以下代码:

from django.db import models
from django.utils import timezone


class ToDoItem(models.Model):
    text = models.CharField(max_length=100)
    due_date = models.DateField(default=timezone.now)

该模型有两个由字段类实例表示的类变量:

  • text: CharField 类的一个实例,我们将用它来存储需要完成的描述。

  • due_date: DateField 类的一个实例,我们将用它来存储待办事项的截止日期。

有关模型字段的更多信息,请参阅 Django 文档

运行迁移

默认情况下,PyCharm 会为 Django 项目自动创建一个 SQLite 数据库。 我们需要为 todo 应用程序和 ToDoItem 模型在数据库中创建表。 在 Django 中,这是通过使用 迁移完成的。 迁移是可由人编辑的文件,其中存储了对数据模型的更改。

  1. 请执行以下操作之一:

    • 在主菜单中,进入 工具 | 运行 manage.py 任务

    • 请按 CtrlAlt0R

    • 打开终端(AltF12 ),点击 New Predefined Session ,在 终端 工具窗口工具栏中选择 manage.py。

    在终端中打开 manage.py

    manage.py 工具在终端选项卡中启动。

  2. 输入 makemigrations 后跟 Enter。

    您应该在控制台输出中看到 Process finished with exit code 0。 todo/migrations 目录现在包含迁移文件 0001_initial.py :

    新的 Django 迁移

  3. 输入 migrate 并按 Enter 以应用更改并为两个新模型在数据库中创建表:

    控制台中 'migrate' 命令的输出

编写视图

Django 视图是指定如何处理 Web 请求以及返回哪些 Web 响应的函数或类。 按照惯例,视图定义在 <app_dir>/views.py 中,其中 <app_dir> 是 Django 应用程序目录。

打开 todo/views.py 并填入以下代码:

from django.views.generic import ListView
from .models import ToDoItem


class AllToDos(ListView):
    model = ToDoItem
    template_name = "todo/index.html"

在这里,我们定义了 AllToDos 类,该类继承自 Django 的 ListView 基本视图类。 我们将使用此视图显示所有可用的待办事项。

创建模板

Django 模板基本上是一个包含 Django 模板语言元素的 html 文件。 模板用于根据视图提供的上下文生成 html 页面。

您可以看到 todo/index.html 在 views.py 中被突出显示为未解析的引用:

对 Django 模板的未解析引用

PyCharm 提供了一个 快速修复 :如果您将鼠标悬停在 index.html 上或按 AltEnter ,您可以选择在 模板 文件夹中创建相应的模板文件:

Django 模板的快速修复

PyCharm 还会创建模板应位于的目录 todo 。 确认此操作:

确认目录创建

PyCharm 创建并打开了 todo/index.html 。 要用一些基本的 html 代码填充它,请输入 html:5 后跟 Tab:

使用 html 实时模板

让我们将带有 Django 模板语言元素的内容添加到模板中。 将以下代码粘贴到 body 标签之间:

<h1>Things to do:</h1>
<table>
    {% for item in object_list %}
    <tr>
        <td>{{ item.text }}</td>
        <td>{{ item.due_date }}</td>
    </tr>
    {% endfor %}
</table>

这里有一个 h1 标题和一个表格。 我们正在使用 for 循环来迭代 object_list 的项目,这些项目将从 AllToDos 视图传递过来。 对于每个项目,Django 将在表格中渲染一行,其中包含 text 和 due_date 的值。

配置 urls

现在我们需要配置如何在浏览器中访问 AllToDos 视图。

  1. 在 todo 目录中, 创建文件 urls.py 并填入以下代码:

    from django.urls import path
    from . import views
    
    urlpatterns = [
        path("", views.AllToDos.as_view(), name="index")
    ]
  2. 接下来,打开文件 myDjangoProject/urls.py (PyCharm 已为您创建),并配置它以包含来自 todo/urls.py 的路径。 您应该得到以下代码:

    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path("todo/", include("todo.urls")),
        path("admin/", admin.site.urls),
    ]

    不要忘记导入 django.urls.include

  3. 在浏览器中打开页面 http://127.0.0.1:8000/todo/。 您应该看到以下文本:

    待办应用程序索引页面

这里有一个标题,但还没有待办事项。 让我们使用 Django 管理界面添加任务。

使用 Django 管理界面

管理站点允许添加、编辑和管理内容。 默认情况下,PyCharm 会为新 Django 项目自动启用 Django 管理界面。

设置管理站点

  1. 首先,我们需要创建一个超级用户。 为此,请在 manage.py 控制台(CtrlAlt0R )中输入 createsuperuser ,指定您的电子邮件地址和密码。

  2. 现在转到您的 Django 服务器上的 /admin/ ,例如 http://127.0.0.1:8000/admin/。 您应该看到以下登录页面:

    Django 管理站点登录页面

登录后,将显示管理页面。 它有 身份验证和授权(组和用户) 部分,但没有添加待办事项的方式。 要实现此功能,我们必须在管理界面中注册 ToDoItem 模型。

添加内容

  1. 打开文件 todo/admin.py ,并输入以下代码:

    from django.contrib import admin
    from .models import ToDoItem
    
    
    admin.site.register(ToDoItem)
  2. 在浏览器中刷新页面。 TODO 部分和 待办事项 应该出现:

    包含待办部分的 Django 管理站点

  3. 点击 添加 创建一个待办事项:

    在 Django 管理站点中添加待办事项

    当您准备好时,点击 保存。

新创建的待办事项以 ToDoItem object (1) 的形式出现在列表中。 这样的命名使内容管理变得复杂,因为您必须打开每个任务才能阅读其描述。

让我们通过向 ToDoItem 模型添加一个 __str__() 方法来解决这个问题。 打开 todo/models.py 并添加以下内容:

def __str__(self):
    return f"{self.text}: due {self.due_date}"

您应该得到以下内容:

from django.db import models
from django.utils import timezone


class ToDoItem(models.Model):
    text = models.CharField(max_length=100)
    due_date = models.DateField(default=timezone.now)

    def __str__(self):
        return f"{self.text}: due {self.due_date}"

现在,待办事项列表提供了所有所需的信息:

管理站点上的待办事项列表

提供功能

现在,既然您已经添加了一些待办事项,请再次转到 http://127.0.0.1:8000/todo/。 任务列表应该在那里:

显示待办事项列表

如何过滤以仅显示今天需要完成的任务? 让我们将此功能添加到我们的应用程序中。

转到 views.py 并添加 TodayToDos 类及以下代码:

class TodayToDos(ListView):
    model = ToDoItem
    template_name = "todo/today.html"

    def get_queryset(self):
        return ToDoItem.objects.filter(due_date=date.today())

此类与 AllToDos 非常相似,不同之处在于它使用了另一个模板(我们稍后会创建)并实现了 get_queryset 方法,仅返回 ToDoItem 对象中 due_date 为今天的那些。

date 应该用红色波浪线突出显示。 将鼠标悬停在其上,点击 导入此名称 ,并选择 datetime.date 以在文件开头添加相应的导入语句。

我们需要创建 today.html 模板。 为了避免从 index.html 复制粘贴并在项目中出现重复代码,我们将使用 Django 模板继承

  1. 通过右键点击 模板 在 项目 工具窗口中选择 新建 | HTML 文件 ,在 myDjangoProject/templates 中创建 base.html 。

  2. 将代码从 index.html 复制到 base.html ,然后用以下内容替换 <body> 标签之间的所有内容:

    {% block content %}{% endblock %}

    这就是 myDjangoProject/templates/base.html 应该的样子:

    <!doctype html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport"
                  content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
            <meta http-equiv="X-UA-Compatible" content="ie=edge">
            <title>Document</title>
        </head>
        <body>
            {% block content %}{% endblock %}
        </body>
    </html>
  3. 转到 index.html ,删除除 <h1> 和 <table> 标签内容之外的所有内容,然后将它们用 Django 模板语言元素包裹,如下所示:

    {% extends "base.html" %}
    {% block content %}
        <h1>Things to do:</h1>
        <table>
            {% for item in object_list %}
            <tr>
                <td>{{ item.text }}</td>
                <td>{{ item.due_date }}</td>
            </tr>
            {% endfor %}
        </table>
    {% endblock %}
  4. 创建 myDjangoProject/templates/todo/today.html 并填入以下代码:

    {% extends "base.html" %}
    {% block content %}
        <h1>Things to do today:</h1>
        <table>
            {% for item in object_list %}
            <tr>
                <td>{{ item.text }}</td>
            </tr>
            {% endfor %}
        </table>
    {% endblock %}

    请注意,这里不需要截止日期,因为此页面仅显示截止日期为今天的待办事项。

我们已经创建了一个包含所有通用 html 标签的基础模板 base.html 。 index.html 和 today.html 是 子模板 ,它们继承了通用元素,但具有特定内容。

我们还需要配置如何在浏览器中访问今天的任务。 转到 myDjangoProject/todo/urls.py 并将 path("today/", views.TodayToDos.as_view(), name="today") 添加到 urlpatterns 以获得以下内容:

from django.urls import path
from . import views

urlpatterns = [
    path("", views.AllToDos.as_view(), name="index"),
    path("today/", views.TodayToDos.as_view(), name="today")
]

让我们确保一切按预期工作。 转到 http://127.0.0.1:8000/admin/ 并添加几个待办事项,将 截止日期 设置为今天。 然后转到 http://127.0.0.1:8000/todo/today/ 并确保您看到新添加的待办事项:

今天到期的待办事项

改进体验

在此阶段,我们的待办事项应用程序完成了其预期的功能:

  • 显示所有待办事项的列表

  • 显示今天需要完成的任务

  • 允许通过 Django 管理界面添加新任务

但它看起来不太美观,也不太方便使用。 让我们来改进它!

改进 html 页面外观的最简单方法是实现 CSS。 例如,我们可以使用 Simple CSS。 打开 base.html 并将以下行放在 <head> 标签之间的任意位置:

<link rel="stylesheet" href="https://cdn.simplecss.org/simple.min.css">

转到浏览器中的 http://127.0.0.1:8000/todo/ 查看我们应用程序的新外观:

带有 CSS 的应用程序主页

由于我们使用了基础模板, http://127.0.0.1:8000/todo/today/ 的外观也随之改变:

带有 CSS 的应用程序主页

现在让我们添加一些导航元素,以避免在浏览器地址栏中输入地址。 在 base.html 中,在打开的 <body> 标签后粘贴以下代码:

<div>
    <a class="button" href='{% url "index" %}'>All tasks</a>
    <a class="button" href='{% url "today" %}'>Today</a>
</div>

结果如下:

https://i-blog.csdnimg.cn/img_convert/0ea00ad5d75feea3ded7807a921e1f00.png

Gif

测试应用程序

您可能已经注意到,应用程序“所有任务”页面上的一些待办事项的截止日期是 5 月 12 日。 这些任务实际上已经过期,我们不需要显示它们。 通过在开发应用程序时引入测试,可以避免此类疏漏。

在 myDjangoProject/todo 目录中,有文件 tests.py 。 它用于 Django 测试。 让我们编写一个测试,检查待办事项是否根据其截止日期正确呈现在我们应用程序的主页上:

from datetime import date, timedelta

from django.test import TestCase
from django.urls import reverse
from .models import ToDoItem


def create_todo(todo_text, days):
    return ToDoItem.objects.create(text=todo_text, due_date=date.today() + timedelta(days=days))


class AllToDosViewTest(TestCase):

    def test_today(self):
        todo = create_todo("To be done today", 0)
        response = self.client.get(reverse("index"))
        self.assertQuerySetEqual(
            response.context["todoitem_list"],
            [todo]
        )

    def test_last_week(self):
        todo = create_todo("This task is past due", -7)
        response = self.client.get(reverse("index"))
        self.assertQuerySetEqual(
            response.context["todoitem_list"],
            []
        )

    def test_next_week(self):
        todo = create_todo("Still have some time", 7)
        response = self.client.get(reverse("index"))
        self.assertQuerySetEqual(
            response.context["todoitem_list"],
            [todo]
        )

这里, create_todo 是一个创建待办事项的快捷函数, AllToDosViewTest 是一个包含 3 个方法的测试类: test_today、 test_last_week、 test_next_week。 每个方法都会创建一个具有相应截止日期的任务,然后检查该任务是否呈现在应用程序的主页上。 截止日期为当前日期前 7 天的任务不应显示。

要运行此测试,请右键点击编辑器中文件 tests.py 的背景,选择选项 运行 ,或直接按 CtrlShiftF10。

测试结果显示在 测试运行器 选项卡中的 运行 工具窗口中:

运行测试

您可以看到 test_last_week 测试失败了,因为创建的待办事项被添加到了主页上显示的项目列表中,尽管它已经过期。

让我们通过向 AllToDos 类添加 get_queryset 方法来修复它:

def get_queryset(self):
    return ToDoItem.objects.filter(due_date__gte=date.today())

该方法将过滤对象,以便视图仅返回截止日期大于或等于今天日期的任务(这就是 __gte 的含义)。

通过点击 运行 工具窗口工具栏上的  重新运行测试。 现在所有测试都成功通过了:

所有测试通过

摘要

本教程结束。 您已成功创建、启动并测试了一个简单的 Django 应用程序。 让我们总结一下您在 PyCharm 的帮助下完成的工作:

  • 创建了一个带有应用程序的 Django 项目

  • 启动了一个 Django 服务器

  • 创建了模型、视图和模板

  • 配置了 urls

  • 启动了应用程序

  • 创建并执行了一个测试

### 回答1: PyCharm 是一种强大的 IDE 工具,用于开发 Python 应用程序。PyCharm 的使用者可以用其创建 Django 项目,步骤如下: 第一步,打开 PyCharm,打开主菜单并选中 File -> New Project。 第二步,在新项目的设置中,选择 Django创建一个新的虚拟环境。 第三步,填写 Django 项目的名称和位置,并选择要使用的 Django 版本。 第四步,设置 Django 项目的模板引擎、数据库、开发服务器等。 第五步,如果需要添加其他 Python 包或库,可以使用 PyCharm 中的包管理工具。 第六步,使用 PyCharm 中的 Django 命令行工具创建一个 Django App。 第七步,使用 PyCharm代码编辑器来编写和调试 Django 代码。 第八步,使用 PyCharm 中的 Django 测试工具进行测试。 总之,在 PyCharm创建 Django 项目很容易。PyCharm 提供了许多工具和功能,可以让 Django 开发者更加高效地编写代码。 ### 回答2: PyCharm是广受欢迎的Python IDE,旨在提高Python开发者的生产效率。PyCharm提供了全面的编程和调试支持,包括Django框架的支持。本文将介绍如何在PyCharm创建Django项目。 第一步: 首先,必须安装Python和Django。 第二步: 打开PyCharm并单击“Create New Project”,进入“New Project”对话框。 第三步: 在“New Project”对话框中,输入项目名称和项目位置。 在下拉框菜单中指定解释器,以便PyCharm将其用于此项目。 第四步: 在下一步中,选择Django,指定当前选择的Django版本。 在下面的部分中,定义项目的应用。 第五步: 在下一步中,定义项目的名称和位置。 在下一步中,指定数据库和模板引擎。 第六步: 在下一步中,输入用于管理员的用户名和密码。 最后,单击“Finish”按钮以向PyCharm提交新项目的信息。 第七步: 在项目窗口中,用户可以看到项目的层次结构。 “settings.py”文件包含项目的设置和配置。 在“urls.py”文件中,用户定义项目中的URL路由。 “views.py”文件包含Django视图。 总结: 在PyCharm创建Django项目的步骤相对简单,需要注意的是硬件环境和软件环境的准备工作,然后依次选择项目的名称、解释器、Django版本、项目的应用还有数据库和模板引擎等等,最后提交新项目信息并进行管理。这样,就能开始Django项目的编写和开发。 ### 回答3: PyCharm 是一款集成开发环境(IDE),支持 Python 开发。Django 是一款著名的 Python Web 框架,它可以帮助开发人员更快地构建 Web 应用程序。在 PyCharm创建 Django 项目非常容易。 首先,需要确保已经安装了 PyCharmDjango。如果未安装,请先安装它们。安装完成后,打开 PyCharm,根据向导提示创建项目。 在创建项目的过程中,需要选择 Django。选择 Django 后,需要选择 Django 项目的类型,此处可以选择 Web 应用程序或 Web 服务。此处以 Web 应用程序为例。 接下来,需要选择项目的目录、虚拟环境、Python 解释器等选项。在这些选项中,Python 解释器和虚拟环境非常重要,因为它们会影响项目的运行。 创建项目后,可以看到项目的结构: ```bash project |-project | |-__init__.py | |-settings.py | |-urls.py | |-wsgi.py |-manage.py ``` 其中,project 目录是项目的主目录,manage.py 是 Django 的命令行工具,用于管理项目。 接下来,在 PyCharm创建 Django 应用程序。右键单击项目目录,选择“New”,然后选择“Django 应用程序”。在此处填写应用程序的名称,并选择是否将其添加到项目中。 创建完应用程序后,可以在项目的结构中看到它: ```bash project |-project | |-__init__.py | |-settings.py | |-urls.py | |-wsgi.py |-app | |-__init__.py | |-views.py | |-models.py |-manage.py ``` 其中,app 是应用程序的目录,其中包含 views.py 和 models.py,这些文件负责应用程序的逻辑和数据管理。 最后,在 PyCharm 中运行 Django 项目。右键单击项目目录,选择“Run”,然后选择“Run ‘project’”。这将启动 Django 服务并运行应用程序。在浏览器中输入 http://localhost:8000,即可访问应用程序。 在 PyCharm创建 Django 项目非常简单,只需要几个步骤即可完成。通过使用 PyCharmDjango,开发人员可以更快、更高效地构建 Web 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值