創(chuàng)建模板頁
在templates文件下新建一個(gè)index.html文件作為需要渲染的模板文件仑性,并且納入版本控制啊研。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>車輛違章查詢</title>
</head>
<body>
<div id="header">
<form action="/search/" method="post">
<input type="text" name="carno" value="" placeholder="請輸入車牌號碼查詢"/>
<input type="submit" value="查詢"/>
</form>
</div>
<hr /><br />
<table>
<tr>
<th>車牌</th>
<th>車主</th>
<th>時(shí)間</th>
<th>地點(diǎn)</th>
<th>違章原因</th>
<th>處罰方式</th>
<th>是否受理</th>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
</body>
</html>
渲染模板頁
在創(chuàng)建好模板文件之后者祖,得在view.py文件中添加視圖函數(shù)眶痰,才能渲染到頁面上恍飘。
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
視圖函數(shù)寫完之后榨崩,映射URL,在urls.py文件中的
urlpatterns =[
……
path('', index)
]
實(shí)現(xiàn)功能需要連接數(shù)據(jù)庫去查詢章母,要操作數(shù)據(jù)庫可以使用Django中的ORM框架來完成對象到關(guān)系模型的轉(zhuǎn)換母蛛,然后就可以使用面向?qū)ο蟮姆绞絹硗瓿稍鰟h改查的操作。
創(chuàng)建模型類
from django.db import models
class Car(models.Model):
"""車輛模型表"""
no = models.AutoField(primary_key=True, verbose_name='編號')
car_no = models.CharField(max_length=10, verbose_name='車牌號', unique=True)
owner = models.CharField(max_length=20, verbose_name='車主')
type = models.IntegerField(
choices=((1, '大型汽車'), (2, '小型汽車'), (3, '專用汽車'), (4, '小型汽車')),
default=2, verbose_name='類型'
)
def __str__(self):
return f"{self.car_no}"
class Meta:
db_table = 'tb_car'
verbose_name = '車輛'
verbose_name_plural = '車輛'
class Record(models.Model):
"""違章記錄模型"""
no = models.AutoField(primary_key=True, verbose_name='編號')
car = models.ForeignKey(to=Car, on_delete=models.PROTECT, db_constraint=False, db_column='con', verbose_name='車輛')
offend_time = models.DateTimeField(verbose_name='違章時(shí)間')
offend_place = models.CharField(max_length=256, verbose_name='違章地點(diǎn)')
offend_reason = models.CharField(max_length=1000, verbose_name='違章原因')
punish = models.CharField(max_length=256, verbose_name='處罰方式')
dealed = models.BooleanField(default=False, verbose_name='是否受理')
class Meta:
db_table = 'tb_record'
verbose_name = "違章記錄"
verbose_name_plural = '違章記錄'
創(chuàng)建好模型之后在終端生成遷移和執(zhí)行遷移
python manage.py makemigrations carserch #生成遷移
python manage.py migrate # 執(zhí)行遷移
注意:
在每次生成和執(zhí)行遷移之后乳怎,Django自帶的‘django_migrations'表中會有對應(yīng)的遷移記錄彩郊,如果將表刪除了,想重新遷移這張表蚪缀,得在django_migrations這張表中刪除對應(yīng)的遷移記錄才可以再次遷移這張表秫逝。
record.png
在Django自帶'django_user'這張表中保存著在控制臺創(chuàng)建的超級管理員的賬號信息。Django默認(rèn)會將
會話的數(shù)據(jù)寫到表’django_session'表中询枚。
tables.png
注冊模型
想讓自己的應(yīng)用在后臺顯示违帆,還要在應(yīng)用下面的admin.py文件下注冊模型才行。
from django.contrib import admin
from carsearch.models import Car, Record
# 后臺模型管理類
class CarModelAdmin(admin.ModelAdmin):
list_display = ('no', 'car_no', 'owner', 'type')
ordering = ('no',)
# 后臺模型管理類
class RecordModelAdmin(admin.ModelAdmin):
list_display = ('no', 'car', 'offend_time', 'offend_place', 'offend_reason', 'punish', 'dealed')
list_per_page = 4
ordering = ('no', )
admin.site.register(Car, CarModelAdmin)
admin.site.register(Record, RecordModelAdmin)
添加數(shù)據(jù)
模型注冊好之后可以使用Django的超級管理員賬號在后臺添加項(xiàng)目所需數(shù)據(jù)金蜀。
在終端中使用下面這條命令創(chuàng)建好Django后臺超級管理員賬號
python manage.py createsupueruser