django模板之的html模板中调用对象属性或对象的方法
环境:依赖最初test2数据库
python3版本
多python版本环境
进入,python3虚拟环境,新建项目test4:
]#cdpy3/django-test1/]#django-adminstartprojecttest4
创建应用bookshop:
]#cdtest4]#pythonmanage.pystartappbookshop
修改settings.py主配置文件:
]#vimtest4/settings.py...#数据库为mysql,使用原来的test2数据库名称:DATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'test2','USER':'root','PASSWORD':'root','HOST':'192.168.255.70','PORT':'3306',}}#添加应用:INSTALLED_APPS=('django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','bookshop',)#添加模板查找路径:TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS':[os.path.join(BASE_DIR,'templates')],...]...
在项目名称目录下,添加模板目录并在其下添加应用的模板目录:
]#mkdir-ptemplates/bookshop
在主url路由配置文件中,添加查找应用url的路由:
]#vimtest4/settings.py...urlpatterns=[url(r'^admin/',include(admin.site.urls)),url(r'^',include('bookshop.urls',namespace='bookshop')),]
在应用目录下创建urls.py文件:
]#vimbookshop/urls.pyfromdjango.conf.urlsimporturlfrom.importviewsurlpatterns=[url(r'\^$',views.index,name='index'),]
以上基本配置完成,下面演示在模板中调用对象的方法:
定义模型类:
为了不用迁移,定义模型类要和test2数据库结构一样;
]#vimbookshop/models.pyfromdjango.dbimportmodelsclassBookInfo(models.Model):btitle=models.CharField(max_length=20)bpub_date=models.DateTimeField(db_column='pub_date')#定义字段名称为pub_date,默认字段名称就是类属性,即默认字段名称为bpub_datebread=models.IntegerField()bcommet=models.IntegerField()isDelete=models.BooleanField()#定义表名classMeta():db_table='bookinfo'#如果不写上面2行,表名默认为项目名称.类名称,即bookshop.bookinfoclassHeroInfo(models.Model):hname=models.CharField(max_length=10)hgender=models.BooleanField()hcontent=models.CharField(max_length=1000)isDelete=models.BooleanField()book=models.ForeignKey('BookInfo')#定义外键,此处引号是否可省略,BookInfo先定义就可省略引号,如果后定义则需要使用引号,使用引号绝对没错;在表中字段自动变为book_iddefshowname(self):returnself.hname
定义视图:
]#vimbookshop/views.pyfromdjango.shortcutsimportrenderfrom.modelsimport*#frommodelsimport*#在python2写法defindex(request):#必须接收一个参数hero=HeroInfo.objects.get(pk=1)#查询主键(pk)=1的条目context={'hero':hero}#必须为字典格式returnrender(request,'bookshop/index.html',context)
定义index.html模板文件:
]#vimtemplates/bookshop/index.html<!DOCTYPEhtml><html><head><title>Title</title></head><body>{{hero.hname}}<br><!--调用对象的属性-->{{hero.showname}}<!--调用对象的方法,但不能给方法传递参数--><!--注释#点号解析顺序:#1.先把hero作为字典,hname为键查找#2.再把hero作为对象,hname为属性或方法查找#3.最后把hero作为列表,hname为索引查找--></body></html>
启动web服务:
]#pythonmanage.pyrunserver192.168.255.70:8000报错:ErrorloadingMySQLdbmodule:Nomodulenamed'MySQLdb'
解决:由于在python3版本上使用pymysql库,没有MySQLdb库,则需要配置;
]#vimtest4/__init__.pyimportpymysqlpymysql.install_as_MySQLdb()
再次启动web服务成功;浏览器访问:http://192.168.255.70:8000/
完成验收在html模板文件中调用对象的属性和对象的方法。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。