django单元测试使用正确数据库(django框架的特点)

本章将构建、测试和部署一个带有主页和关于页面的Pages应用。我们将学习Django的基于类的视图和模板,这些都是本书后面构建的更复杂的Web应用的基础。 创建应用 $mkdirpages&&cdpages $django-adminstartprojectconfig. $pythonmanage.pystartapppages $viconfig/settings.py #co…

本章将构建、测试和部署一个带有主页和关于页面的Pages应用。我们将学习Django的基于类的视图和模板,这些都是本书后面构建的更复杂的Web应用的基础。

创建应用

$ mkdir pages && cd pages
$ django-admin startproject config .
$ python manage.py startapp pages
$ vi config/settings.py
# config/settings.py
INSTALLED_APPS = [
    \'django.contrib.admin\',
    \'django.contrib.auth\',
    \'django.contrib.contenttypes\',
    \'django.contrib.sessions\',
    \'django.contrib.messages\',
    \'django.contrib.staticfiles\',
    \'pages\', # new
]

模板

每个网络框架都需要方便的方法来生成HTML文件,在Django中使用模板:可以连接在一起的独立HTML文件,也包括基本的逻辑。

首先要考虑的是在Django项目的结构中把模板放在哪里。有两个选择。默认情况下,Django的模板加载器会在每个应用中寻找相关模板。然而,这个结构有些混乱:每个应用都需要一个新的模板目录。

└── pages
    ├── templates
        ├── pages
            ├── home.html

这意味着我们需要创建一个新的模板目录,一个新的应用目录,页面,以及最后我们的模板本身,即home.html。

另一种方法,那就是创建项目级模板目录,并将所有模板放在其中。通过对config/settings.py文件做一个小小的调整,我们可以告诉Django也在这个目录下寻找模板。这就是我们要使用的方法。

$ mkdir templates
$ vi templates/home.html
<!-- templates/home.html -->
<h1>Homepage</h1>
$ vi templates/about.html
<!-- templates/about.html -->
<h1>About page</h1>
$ vi config/settings.py
# config/settings.py
TEMPLATES = [
    {
        ...
        \'DIRS\': [str(BASE_DIR.joinpath(\'templates\'))], # new
        ...
    },
]

基于类的视图

我们将使用内置的TemplateView来显示我们的模板。更新pages/views.py文件。

# pages/views.py
from django.views.generic import TemplateView


class HomePageView(TemplateView):
    template_name = \'home.html\'


class AboutPageView(TemplateView): # new
    template_name = \'about.html\'

URLs

config/urls.py

# config/urls.py
from django.contrib import admin
from django.urls import path, include # new

urlpatterns = [
    path(\'admin/\', admin.site.urls),
    path(\'\', include(\'pages.urls\')), # new
]

pages/urls.py

# pages/urls.py
from django.urls import path
from .views import HomePageView, AboutPageView # new

urlpatterns = [
    path(\'about/\', AboutPageView.as_view(), name=\'about\'), # new
    path(\'\', HomePageView.as_view(), name=\'home\'),  
]

当使用基于类的视图时,你总是在视图名称的后面加上as_view()。

django单元测试使用正确数据库(django框架的特点)

扩展模板

$ touch templates/base.html
$ vi templates/base.html 
<!-- templates/base.html -->
<header>
  <a href=\"{% url \'home\' %}\">Home</a> |
  <a href=\"{% url \'about\' %}\">About</a>
</header>

{% block content %}
{% endblock content %}

$vi templates/home.html
<!-- templates/home.html -->
{% extends \'base.html\' %}

{% block content %}
<h1>Homepage</h1>
{% endblock content %}

$vi templates/about.html 
<!-- templates/about.html -->
{% extends \'base.html\' %}

{% block content %}
<h1>About page</h1>
{% endblock content %}

django单元测试使用正确数据库(django框架的特点)

测试

django单元测试使用正确数据库(django框架的特点)

# pages/tests.py
from django.test import SimpleTestCase


class SimpleTests(SimpleTestCase):
    def test_home_page_status_code(self):
        response = self.client.get(\'/\')
        self.assertEqual(response.status_code, 200)

    def test_about_page_status_code(self):
        response = self.client.get(\'/about/\')
        self.assertEqual(response.status_code, 200)

我们在这里使用 SimpleTestCase 因为我们没有使用数据库。如果我们使用数据库,我们会使用 TestCase。然后我们检查每个页面的状态码是否为 200,这是成功 HTTP 请求的标准响应。

执行:

$ python manage.py test
System check identified no issues (0 silenced).
..
----------------------------------------------------------------------
Ran 2 tests in 0.060s

OK

django单元测试使用正确数据库(django框架的特点)

本文来自投稿,不代表来拓客立场,如若转载,请注明出处:https://www.laituoke.com/ltk/7391.html