2018年2月

基本的测试策略

编写测试有很多方法。

一些程序员遵循“测试驱动开发”的规定;他们在编写代码之前先去编写测试。 这看起来可能与直觉相反,但实际上它就是大多数所做的:人们先描述一个问题,然后创建一些代码来解决问题。 测试驱动的开可以用Python测试用例将这个问题形式化。

更多的时候,测试的新手会创建一些代码,然后决定应该进行一些测试。 也许早些时候写一些测试会更好,但是什么时候开始都不晚。

有时候很难确定从哪里开始编写测试。 如果你已经写了几千行Python,选择一些测试可能并不容易。 在这种情况下,当您下次进行更改时,无论是添加新功能还是修复错误,都可以编写第一个测试。

所以我们现在就去做。

- 阅读剩余部分 -

写一个简单的表单

polls/templates/polls/detail.html

<h1>{{ question.question_text }}</h1>

{% if error_message %}<p><strong>{{ error_message }}</strong></p>{% endif %}

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}" />
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br />
{% endfor %}
<input type="submit" value="Vote" />
</form>

- 阅读剩余部分 -

视图(View)

视图可以理解为一个包含特定函数和模板的 web 页面。例如我们的 polls app 设计了以下几个视图:

  • Question “index” page – displays the latest few questions.
  • Question “detail” page – displays a question text, with no results but with a form to vote.
  • Question “results” page – displays results for a particular question.
  • Vote action – handles voting for a particular choice in a particular question.

Django 使用 'URLConf' 映射 URL 到 View 上。

polls/view.py 中写人更多的视图:

def detail(request, question_id):
    return HttpResponse("You're looking at question %s." % question_id)

def results(request, question_id):
    response = "You're looking at the results of question %s."
    return HttpResponse(response % question_id)

def vote(request, question_id):
    return HttpResponse("You're voting on question %s." % question_id)

- 阅读剩余部分 -

mysite/settings.py 有很多关于项目的设置

数据库设置

mysite/settings.py 中找到 DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }

INSTALLED_APPS

这些应用程序默认包含在常见情况中。

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    ...

)

- 阅读剩余部分 -

创建项目

$ django-admin startproject mysite

这将创建一个名为 mysite 的项目,目录结构如下

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

开发服务器

$ python manage.py runserver

默认端口 8000,你可以指定端口

$ python manage.py runserver 8080

你还可以指定除了本机外其他 IP 也能访问

$ python manage.py runserver 0:8000

- 阅读剩余部分 -