接上文,django(一):项目搭建开始开发第一个项目。
1. 新建app
创建一个app应用,取名为company。
python manage.py startapp company
注册app到settings.py文件中。
2.实现Model层
settings.py文件中配置数据库,作为示例我们使用sqlite3数据库。这个数据库需要单独安装,在django环境下就可以运行。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
在models.py中增加Company类,包含三个属性。
from django.db import models
class Company(models.Model):
name = models.CharField(max_length=255, verbose_name='公司名称')
addr = models.CharField(max_length=255, verbose_name='公司地址')
phone = models.CharField(max_length=255, verbose_name='公司电话')
# 配置元信息
class Meta:
db_table = 't_company'
verbose_name = '公司信息'
verbose_name_plural = verbose_name
在终端输入命令创建数据库。
python manage.py makemigrations
python manage.py migrate
3.实现View层
定义函数company_list,返回数据库中所有数据。数据渲染由一个模板来完成。
# Create your views here.
from django.shortcuts import render
from .models import Company
def company_list(request):
company = Company.objects.all()
context = {'companys': company}
return render(request, 'company_list.html', context)
4.实现Template层
定义模板company_list.html,渲染view层返回的所有数据。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Company List</title>
</head>
<body>
<h1>Company List</h1>
<ul>
{% for company in companys %}
<li>{{ company.name }}-{{ company.addr }}-{{company.phone}}</li>
{% endfor %}
</ul>
</body>
</html>
5.实现路由层
在项目下增加路由“company/”,转交应用层路由company.urls处理。
在应用company中增加路由company/companys/,由views.company_list层处理该请求。
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('companys/', views.company_list, name='company_list'),
]
6.增加测试数据
在终端执行以下命令,增加3条测试数据。
执行位置如下:
执行命令如下:
from company.models import Company
company = Company(name="Tom", addr="beijing", phone="13100000001")
company.save()
company = Company(name="Jerry", addr="shanghai", phone="13100000002")
company.save()
company = Company(name="Spike", addr="tianjin", phone="13100000003")
company.save()
7.运行程序
在终端执行以下命令,运行程序。
python manage.py runserver
在浏览器中输入地址:http://127.0.0.1:8000/company/companys/,可以看到刚才增加的3条测试数据。