Admin
我们可以开始通过内置的 Django 应用将数据输入到我们的新模型中。 但是我们必须首先做两件事:
创建一个超级用户帐户并更新 admin.py ,以便显示 books 应用程序。从超级用户帐户开始。 在命令行上运行以下命令:
(library) $ python manage.py createsuperuser
按照提示输入用户名,电子邮件和密码。 请注意,出于安全原因,输入密码时屏幕上不会显示文本。
现在更新我们的图书应用的 admin.py
文件。
# books/admin.py from django.contrib import admin from .models import Book admin.site.register(Book)
这就是我们所需要的! 再次启动本地服务器。
(library) $ python manage.py runserver
导航到 http://127.0.0.1:8000/admin
并登录。
您将被重定向到管理员主页。
单击书籍的链接。
然后点击右上角的“添加图书+”按钮。
我已经输入了 Django 初学者书籍的详细信息。 您可以在此处输入任何文本。 纯粹是出于演示目的。 单击“保存”按钮后,我们将重定向到列出所有当前条目的“书籍”页面。
我们传统的 Django 项目现在有数据,但是我们需要一种将其公开为网页的方法。 这意味着创建视图,URL 和模板文件。 现在开始吧。
Views
views.py 文件控制如何显示数据库模型内容。 由于我们要列出所有书籍,因此可以使用内置的通用类 ListView。更新 books/views.py
文件。
# books/views.py from django.views.generic import ListView from .models import Book class BookListView(ListView): model = Book template_name = 'book_list.html'
首先,我们导入了 ListView 和 Book 模型。 然后,我们创建一个 BookListView 类,该类指定要使用的模型和模板(尚未创建)。
在拥有一个正常工作的网页之前,需要执行两个步骤:制作模板并配置 URL 。 让我们从 URL 开始。
URLs
我们需要同时设置项目级别的 urls.py 文件,然后在 books 应用程序中设置一个。 用户访问我们的网站时,他们将首先与 library_project/urls.py
文件进行交互,因此,请先对其进行配置。
# library_project/urls.py from django.contrib import admin from django.urls import path, include # new urlpatterns = [ path('admin/', admin.site.urls), path('', include('books.urls')), # new ]
前两行会导入内置的管理应用程序,路线的路径,并包括将与我们的图书应用程序一起使用的内容。 如果用户转到 /admin/
,他们将被重定向到 admin 应用。 我们在图书应用路由中使用空字符串 ' '
,这意味着首页上的用户将直接重定向到图书应用。
现在,我们可以配置我们的 books/urls.py
文件。 但是,糟糕! Django 由于某种原因在应用程序中默认不包含 urls.py 文件,因此我们需要自己创建它。
(library) $ touch books/urls.py
现在,在文本编辑器中更新新文件。
# books/urls.py from django.urls import path from .views import BookListView urlpatterns = [ path('', BookListView.as_view(), name='home'), ]
我们导入视图文件,在空字符串''处配置 BookListView ,并添加命名 URL 主页作为最佳实践。
Django 的工作方式,现在,当用户转到我们网站的主页时,他们将首先点击 library_project/urls.py
文件,然后将其重定向到使用 BookListView 指定的 books/urls.py
。 在此视图文件中,Book 模型与 ListView 一起使用以列出所有书籍。
最后一步是创建我们的模板文件,以控制实际网页上的布局。 我们已经在视图中将其名称指定为book_list.html
。 其位置有两个选项:默认情况下,Django 模板加载器将在以下位置的 books 应用程序内查找模板:books/templates/books/book_list.html
。 我们也可以改为创建一个单独的项目级模板目录,然后更新 settings.py 文件以指向该目录。
首先在 books 应用中创建一个新的模板文件夹,然后在其中创建一个 books 文件夹,最后是一个book_list.html
文件。
(library) $ mkdir books/templates (library) $ mkdir books/templates/books (library) $ touch books/templates/books/book_list.html
然后更新 template 文件,
<!-- books/templates/books/book_list.html --> <h1>All books</h1> {% for book in object_list %} <ul> <li>Title: {{ book.title }}</li> <li>Subtitle: {{ book.subtitle }}</li> <li>Author: {{ book.author }}</li> <li>ISBN: {{ book.isbn }}</li> </ul> {% endfor %}
Django 内置了允许基本逻辑的模板语言。 在这里,我们使用 for 标签来遍历所有可用的书。 模板标签必须包含在左/右括号和括号内。 因此,格式始终为{%for ...%}
,然后我们必须稍后使用{%endfor%}
关闭循环。
我们要遍历的是对象,其中包含 ListView 提供的所有可用书籍。 该对象的名称为 object_list 。 因此,为了遍历每本书,我们在{% for book in object_list %}
。 然后显示模型中的每个字段。
网页
现在,我们可以启动本地 Django 服务器并查看我们的网页。
(library) $ python manage.py runserver
导航至位于 http://127.0.0.1:8000/
的主页。
如果我们在管理员中添加其他图书,则它们也都将出现在此处。
这是对传统 Django 网站的快速浏览。 现在,向其中添加一个 API !