承接上一章、说到基本的框架已搭建、接下来是数据库的搭建:
四、创建数据库
执行命令:python manage.py migrate 、相当于在数据库创建了表
五、打开数据库文件、先去网站下载一个可以查看数据库文件的软件:点下方SQLiteStudio
https://sqlitestudio.pl/
也可以用(Navicat)软件
六、创建修改数据库的common文件、与sales文件一样的、然后要在modelss.py这个文件操作
输入这几行代码、创建类、继承对应的字段型
然后还要在setting.py文件中添加这个应用(common)的路径:common.apps.CommonConfig
当然前面还添加了一个sales的应用也是可以添加进去的、只是现在用不上
有任何的修改都要去CMD执行命令:python manage.py makemigrations common
这个命令是、如果有更新文件、就刷新这个命令
这个命令,告诉Django , 去看看common这个app里面的models.py ,我们已经修改了数据定义, 你现在去产生相应的更新脚本。
执行一下,会发现在 common\migrations 目录下面出现了0001_initial.py, 这个脚本就是相应要进行的数据库操作代码。
然后就是CMD执行:python manage.py migrate
这个命令是去数据库创建表、就是创建上面001这个文件里的name=costomer这个表
如果上面文件添加了某些字段或代码、刷新完了之后、再执行这个命令更新到数据库中
接下来要给数据库创建超级管理员帐户,进入CMD输入:python manage.py createsuperuser
然后依次输入帐户、邮箱、密码
然后我们需要修改应用里面的 管理员 配置文件 common/admin.py,注册我们定义的model类。这样Django才会知道
from django.contrib import admin
from .models import Customer
admin.site.register(Customer)
下面这个表中就是我们刚建的超级管理员帐户
下面再把刚刚建的客户名称那个表体现在网站上,下面这个页面上的是后台管理、但是别人看你们的网站上是views这个文件里的内容、模板
我们再把之前演示的URLS的路径删了、删了的不用管
下面设置第二个路径sales怎么把数据库的字段名、数据体现在网站上
先在sales文件夹下的views文件写入以下代码:
from django.shortcuts import render
from django.http import HttpResponse
# 导入 Customer 对象定义
from common.models import Customer
def listcustomers(request):
# 返回一个 QuerySet 对象 ,包含所有的表记录
# 每条表记录都是是一个dict对象,
# key 是字段名,value 是 字段值
qs = Customer.objects.values()
# 定义返回字符串
retStr = '' #占位符
for customer in qs:
for name,value in customer.items(): #遍历数据库中customer表中的name(字段名)、value(字段值)这里不是字段的名字
retStr += f'{name} : {value} | ' #f是format格式化字符串,那后面的|是什么意思呢、是字段的间隔、每次遍历后就会隔开
#
表示换行
retStr += '
' #br是html的换行、以html的形式返回
return HttpResponse(retStr) #最后就是定义的retstr值返回到html里
下面打开网址:
上面那种显示格式不好看、我们再改一下网页内容的格式、以单元格的形式显示
from django.shortcuts import render
from django.http import HttpResponse
# 导入 Customer 对象定义
from common.models import Customer
html_table='''
id
姓名
电话号码
地址
QQ
%s
'''
#是头部,是html里的表,是换行的意思,是表头(也就是字段名),最后%s是什么意思、这个是填充的意思、从数据库填充数据、python最后的代码返回数据填充在这里
def listcustomers(request):
# 返回一个 QuerySet 对象 ,包含所有的表记录
# 每条表记录都是是一个dict对象(字典),
# key 是字段名,value 是 字段值
qs = Customer.objects.values()
ph=request.GET.get('qq',None) #大写的GET代表请求、get小写的方法,如果请求的字段有值就返回值、没有就返回None
if ph:
qs=qs.filter(qq=ph) #用filter过滤方法、如果ph有查询出来值就返回给qs、然后返回到网页上
tableContent=''
for customer in qs:
tableContent +=' '
for name,value in customer.items():
tableContent +=f'{value} '
tableContent +=' '
# # 定义返回字符串
# retStr = '' #占位符
# for customer in qs:
# for name,value in customer.items(): #遍历数据库中customer表中的name(字段名)、value(字段值)这里不是字段的名字
# retStr += f'{name} : {value} | ' #f是format格式化字符串,那后面的|是什么意思呢、是字段的间隔、每次遍历后就会隔开
#
# #
表示换行
# retStr += '
' #
是html的换行、以html的形式返回、+=是复合运算符
return HttpResponse(html_table % tableContent) #最后就是定义的retstr值返回到html里



这样是不是就好看多了
还可以用HTML模板形式来喧染、下面是代码
from django.shortcuts import render
from django.http import HttpResponse
# 导入 Customer 对象定义
from common.models import Customer
# 先定义好HTML模板
html_template = '''
id
姓名
电话号码
地址
{% for customer in customers %}
{% for name, value in customer.items %}
{{ value }}
{% endfor %}
{% endfor %}
'''
from django.template import engines
django_engine = engines['django']
template = django_engine.from_string(html_template)
def listcustomers(request):
# 返回一个 QuerySet 对象 ,包含所有的表记录
qs = Customer.objects.values()
# 检查url中是否有参数phonenumber
ph = request.GET.get('phonenumber', None)
# 如果有,添加过滤条件
if ph:
qs = qs.filter(phonenumber=ph)
# 传入渲染模板需要的参数
rendered = template.render({'customers': qs})
return HttpResponse(rendered)

发表评论
留言与评论(共有 0 条评论)
“”
相关文章