Django 添加 Members

添加记录

Members 表是空的,我们应该向其中添加一些成员。

在接下来的章节中,您将学习如何创建一个用户界面来处理 CRUD 操作(创建、读取、更新、删除),但是现在,让我们直接在 Python 解释器(Python shell)中编写 Python 代码,并在非用户界面下向数据库中添加一些成员。

要打开 Python shell,请输入以下命令:

py manage.py shell

现在我们在 shell 中,结果应该是这样的:

Python 3.9.2 (tags/v3.9.2:1a79785, Feb 19 2021, 13:44:55) [MSC v.1928 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

在底部,在三个 >>> 之后写下以下内容:

>>> from members.models import Members

点击 [enter] 并写下此项查看空的成员表:

>>> Members.objects.all()

这将为您提供一个空的 QuerySet 对象,如下所示:

<QuerySet []>

QuerySet 是数据库中的数据集合。

Django QuerySet 一章中阅读更多关于 QuerySet 的信息。

通过执行这两行,向表中添加一条记录:

>>> member = Members(firstname='Emil', lastname='Refsnes')>>> member.save()

执行此命令以查看 Members 表是否有成员:

>>> Members.objects.all().values()

结果会是这样:

<QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'}]>

添加多条记录

可以通过列出 Members 对象来添加多条记录,并对每个条目执行 .save():

>>> member1 = Members(firstname='Tobias', lastname='Refsnes')
>>> member2 = Members(firstname='Linus', lastname='Refsnes')
>>> member3 = Members(firstname='Lene', lastname='Refsnes')
>>> member4 = Members(firstname='Stale', lastname='Refsnes')
>>> members_list = [member1, member2, member3, member4]
>>> for x in members_list:
>>>   x.save()

现在,members 表中有 5 个成员:

>>> Members.objects.all().values()<QuerySet [{'id': 1, 'firstname': 'Emil', 'lastname': 'Refsnes'},
{'id': 2, 'firstname': 'Tobias', 'lastname': 'Refsnes'},{'id': 3, 'firstname': 'Linus', 'lastname': 'Refsnes'},{'id': 4, 'firstname': 'Lene', 'lastname': 'Refsnes'},{'id': 5, 'firstname': 'Stale', 'lastname': 'Refsnes'}]>

浏览器中的视图

我们希望在网页中看到结果,而不是在 Python shell 环境中。

要在网页中查看结果,我们可以为此特定任务创建 视图

members 应用程序中,打开 views.py 文件,如果您已经阅读了本教程的前几章,它应该是这样的:

members/views.py:

  1. from django.http import HttpResponse
  2. from django.template import loader
  3. def index(request):
  4. template = loader.get_template('myfirst.html')
  5. HttpResponse(template.render())

views.py 文件中的内容改为如下所示:

members/views.py:

  1. from django.http import HttpResponse
  2. from django.template import loader
  3. from .models import Members
  4. def index(request):
  5. mymembers = Members.objects.all().values()
  6. output = ""
  7. for x in mymembers:
  8. output += x["firstname"]
  9. return HttpResponse(output)

如第 3 行所示,Members 模型被导入,index 索引视图执行以下操作:

  • 使用 Members 模型的所有值创建 mymembers 对象。
  • 循环遍历 mymembers 对象中的所有项,以生成包含所有 firstname 值的字符串。
  • 将字符串作为输出返回到浏览器。

浏览器中查看结果。如果仍在 Python shell 中,请编写以下命令以退出 shell:

>>> quit()

导航到 /myworld/ 文件夹,然后键入该选项以启动服务器:

py manage.py runserver

在 window 浏览器的地址栏输入 127.0.0.1:8000/members/

结果为: